サイト内検索
Cocoonフォーラム
書き込みの前に以下の3点をご確認ください。
何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。
不具合・カスタマイズ対象ページのURL:
相談内容:
不具合の発生手順:
解決のために試したこと:
※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。
環境情報の取得方法はこちら。
→ https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
→ https://wp-cocoon.com/theme-trouble/
フォーラム利用ガイドリンク
- フォーラムガイドライン
- よくある質問と答え(FAQ)
- サポート対象外のケース
- 原因不明の不具合用トラブルシューティング
- トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw)
- 真っ白画面でのエラーメッセージの確認方法
- ブラウザ環境チェックツール
- Cocoonカスタマイズ依頼
フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。
Topic starter
2019年4月10日 20:38
記事下関連記事の部分を独自のプログラムに切り替えられるフックがほしいです。
今のところ、tmp/related-entriesやtmp/related-listあたりのファイルを子テーマで上書きなどする必要がありますが、できればtmp/related-entries下の内容と別のプログラムとをfunctionsで自由に切り替えられるようにしたいです。
https://notepad.pw/4f1pzize
(...の箇所で切り替え)
pono reacted
Topic starter
2019年4月10日 23:28
ちなみに、get_related_wp_query_argsにフックがあるのは理解しており、WP_Query単体ではない情報を切り替えで掲載しています。
get_related_wp_query_argsでempty($args)をtrueにすると、今度はelse下の内容が表示されるので、このあたりをうまく切り替えられるフックがあればと思っています。
pono reacted
2019年4月11日 23:08
その部分をフィルターフックできるように書くと、テンプレートの記述が複雑になりそうなので、その部分の出力のフックは今回見送ろうと思います。
ただ、何かスマートな方法が思いついたらフックを追加出来ればと思います。
Topic starter
2019年4月11日 23:22
個人的には、
is_related_entries_visible()
と
get_related_entry_type()
の部分の判別が同じファイル内で行われるよりは、
の部分までをrelated-list側に含め、get_related_entry_type関数の返り値をtrue/falseにし、この関数内で判別をフック化したらどうなるだろうとは考えました。
get_template_part関数には読み込むファイル内容前に出力内容を加えるアクションフックがあるので。
pono reacted
Topic starter
2019年4月11日 23:26
そうするとrelated-entries・related-listのファイルごとに出力のオンオフを切り替えられるポイントができますが、他の問題があるかもしれません。
pono reacted
2019年4月11日 23:44
オン・オフの切り替えだけならフックを追加しても、そこまでややこしくならないので大丈夫かと思います。
こんな感じとかでも。
if ((get_related_entry_type() != DATA_AD_FORMAT_AUTORELAXED || is_amp()) && apply_filters('cocoon_template_part_related_list', true)) {
get_template_part('tmp/related-list');
} else {//関連コンテンツユニットの場合
このフックを無効にして、以下のように書くということでもよいでしょうか。
add_action('get_template_part_tmp/related-list', function () {
get_template_part('子テーマに置いてあるテンプレートのパス');
});
※動作確認はしてないです
Topic starter
2019年4月12日 00:21
上記の
if ((get_related_entry_type() != DATA_AD_FORMAT_AUTORELAXED || is_amp()) && apply_filters('cocoon_template_part_related_list', true)) {
get_template_part('tmp/related-list');
} else {//関連コンテンツユニットの場合
でtrue/falseを制御すると、falseのときに
get_template_part('tmp/related-list');
が読み込まれないと思うのですが、先ほどの返信にあるように
の部分をrelated-listファイル側に含めるというのはどうでしょうか?
add_actionについてはその通りで、related-listを読み込んだ際にはコンテンツが追加できるわけですが、そうなると現在related-listによってデフォルトで表示する内容の選択肢が
- WP_Query単体で生成されるリスト
- 「関連記事は見つかりませんでした。」
の2パターンしかないように思うので、ここに『3.非表示』の選択肢ができる制御ポイントを加えたうえでadd_actionを使うのが、最小限の修正でできることなのかなと。
なので、上記の例でいくとrelated-listファイルのコードを
に変更し、条件分岐の部分をrelated-entriesから移すことで、フックのみでの関連記事内プログラムのカスタマイズの幅が広がると思います。
pono reacted
2019年4月12日 19:21
確かに、そっちで書いた方がスマートですね。
そのようにフックを追加したものをアップしておきました。
------------------------------------------------
https://github.com/yhira/cocoon
最新ファイルをダウンロードする場合は、上記ページのダウンロードボタンからzipファイルをダウンロードしてください。
FTPでのアップデート方法はこちら。
https://wp-cocoon.com/ftp-update/
------------------------------------------------
2019年4月12日 19:23
一応、検索から同様のカスタマイズをしようと訪れた方向けに、関連記事テンプレートをカスタマイズする簡単なサンプルコードも載せておきます。
//関連記事を非表示にする add_filter('cocoon_template_part_related_list', '__return_false'); //子テーマにおいてある独自カスタマイズの関連記事テンプレートを呼び出す add_action('get_template_part_tmp/related-list', function () { get_template_part('子テーマに置いてあるテンプレートのパス'); });
Topic starter
2019年4月12日 20:23
確認しました。
フックの追加ありがとうございます。
わいひら様が提示されているサンプルコードに、私のカスタマイズ例を補足しておくと、
条件を満たすカテゴリーに属する記事ではWP_Query単体では実現できない関連記事コンテンツを表示し、条件を満たさないカテゴリーに属する記事では通常のWP_Query単体で生成される関連記事リストを表示する。
といった形です。
なお、WP_Query単体で実現できるカスタマイズであれば、get_related_wp_query_args関数に用意されているフィルターフック「get_related_wp_query_args」で可能です。
2019年4月14日 17:04
ご確認と、補足ありがとうございます!
問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。
また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。
(CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。
フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。
最近の書き込みはこちら。
詳細なカスタマイズ依頼をするならこちら。