[解決済み] single.php での the_content
-
投稿者投稿
-
2011年1月25日 1:54 AM #50219fupaff参加者
不具合の場合は必ずご記入ください。
Welcart のバージョン: v0.9.1
症状を確認したブラウザ: firefox3.6.13, safari5.0.1
サーバー(会社名、サービス名): MAMP1.9.2
SSLの利用: 無し
WordPress のパーリンク設定: /%monthnum%/%postname%/
wordpress3.0.4jp、welcart0.9.1、MAMP上で、いちからテンプレートを制作しています。
single.php のループ内で、the_content を使って商品説明文だけを表示させたいのですが、フィルターが掛かった状態で、サムネイル、タイトル、商品番号、skuと一緒に表示されてしまうため、今回、ご質問させていただきました。
こちらのコミュニティーの記事
https://www.welcart.com/community/archives/tag/the_content
を参考に、リムーブ・フィルターも試してみましたが変化はありませんでした。is_single は、echo したところ、true(1) を返しているようです。
$post -> post_content を、直接 echo した場合、html のタグが取れてしまうため、the_content を使いたいと考えています。
原因としては何が考えられますでしょうか?
なんとか解決したいと思っています。よろしくお願い致します。
2011年1月25日 7:03 AM #61345fupaff参加者>$post -> post_content を、直接 echo した場合、html のタグが取れてしまう
「記事エディタ上の段落、改行が、
<p>
、<br />
として反映されない」に訂正させてください。調べてみると、$post -> post_content 、get_the_content で取得した値は、the_content と違ってフォーマットされていないので、そのようになると理解できました。
となると、質問は、「get_the_contentで取得した記事のデータにエディタ上の段落、改行を反映するには?」と、welcartからはずれたものになりますね‥。
もっと、勉強するべきですね。
申し訳ありません。
開発者さま、素晴らしいプラグインをありがとうございます。
2011年1月25日 8:48 AM #61346nanbuキーマスターこんにちは。
wpautop( $foo, $br ) という関数が有ります。
こちらをご覧ください。
2011年1月25日 9:55 AM #61347fupaff参加者nanbuさま
こんばんは。
ご回答ありがとうございます。
ご教示いただいた関数 wpautop と以下の記事から
https://www.welcart.com/forum/topic.php?id=349
https://www.welcart.com/community/archives/1697
function.php 内に
add_filter('usces_filter_itemPage','my_usces_filter_itemPage', 10);
function my_usces_filter_itemPage(){
$html = wpautop(get_the_content());
return $html;
}
と記述し、解決致しました。
本当にありがとうございました。
ただ、今回、関数 filter_itemPage を見てみると、最初のコミュニティー内の記事にある通り、is_singluar が 偽の場合のみフィルターを通ることが理解できたのですが、そのように動いていないのでは?と疑問に思いました。
is_single も真でしたし、the_content の直前に、ar_dump($post)で post_mine_type を調べましたが、値は、’item’となっていました。
もし、お時間がありましたら、
この点についてお答えいただければ幸いです。
失礼致します。
2011年1月26日 2:11 AM #61348nanbuキーマスターこんにちは。
コミュニティーのその記事はトップページについて説明していますので、single.php で扱うページとは状況が違ってきます。
filter_itemPage($content) はincludes/default_filters.php で設定しており、全てのthe_content に対してフックされます。
しかし、filter_itemPage($content) を見ていただくと分かる通り、ここでは
if( ($post->post_mime_type != 'item' || !is_single()) ) return $content;
としていますので、完全に商品詳細ページのみが対象となります。
商品詳細ページは、is_single は真であり、post_mine_type は’item’で間違いないのです。
2011年1月27日 1:00 PM #61349fupaff参加者nanbuさま
お答えありがとうございます。
落ち着いてコードを見て考えてみると、仰る通りですね。
お恥ずかしい限りです。
フィルターも
remove_filter('the_content',array(&$usces,'filter_itemPage'));
と、はずすして、望んでいた通り解決できました。
welcartが、私に、wordpress、phpに触れるきっかけを作ってくれました。
感謝しております。
このたびは、ほんとうにありがとうございました。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。