アーカイブ

‘フィルター’ タグのついている投稿
2009 年 10 月 31 日

現在のデフォルトテーマ(uCart Default Theme)のトップページ(home.php)で、お勧め商品をループ表示している部分が有りますが、ここにthe_excerpt() やthe_content() といったテンプレートタグを使おうとして困ったことは無いでしょうか。

Welcart は、ある条件の下にこの2つのテンプレートタグにフィルターをかけています。
条件は、is_singular() でない場合(is_single()、is_page() 、is_attachment() のいずれも偽である場合)です。
フィルターの内容は、the_excerpt()、the_content() ともにメイン写真と本文をタグ付きで出力するものです。なので、ループ内でthe_content() と記述するとメイン画像のサムネイルの横に本文といった形で表示されます。

これは通常のブログのページ(index.php)や検索結果などのアーカイブには有効ですが、トップページの「お勧め商品」などグローバルなwp_query を操作した場合(アーカイブとみなされる)は自由なレイアウトができなくなってしまいます。

そこで考えられる対策がremove_filter です。

挿入する位置はthe_content() のすぐ前が分かりやすいです。
スクリプトは次の通りです。


<?php remove_filter('the_excerpt',array($usces,'filter_cartContent'),20); ?>
<?php remove_filter('the_content',array($usces,'filter_cartContent'),20); ?>

1行目はexcerpt に対するフィルター、2行目はcontent に対するフィルターを外しています。これによりthe_excerpt()、the_content() が従来の形で出力されるようになります。

[まとめ]
the_excerpt() やthe_content() を使って意図しないサムネイルが出力されるようなら、すぐ前の位置にリムーブ・フィルターを設置しよう。