タナビーの高梨です。
WordPressのテーマ「cocoon」では、豊富なアクションフックとフィルターフックが提供されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回はcocoon設定の保存時前後に発火するアクションフック
bbp_before_main_contentとbbp_after_main_contentとbbp_template_notices
です。
フックの発火条件
まずそもそもこのフックが発火するには、
・bbpressがインストールされている(他のプラグインでも良いのかも、真相不明)
・cocoon設定の固定ページタブで、「コメント表示する」がチェックされている
・固定ページのテンプレートが「bbpress-create topics」または「bbpress-forums(index)」である
という3つの条件を満たしている必要があります。
使いどころ
本文全体である”bbp-container”のクラスを持つ<div>の前後に割り込むアクションフックです。
画像を見て、出したい内容を考えてください。
赤くなっているところに表示できます。
謎なのが、bbp_before_main_contentとbbp_template_noticesが元のソースでは連続で書かれていることです。
これらのフックは全部で2か所でしか現れず、2か所とも同じパターンで連続で書かれています。
このため、普通に考えればどちらか片方でフックを拾えば事足りるはずで、2つ存在する理由が分かりません。
テンプレートがbbpress-create topicsの場合

テンプレートがbbpress-forums(indexx)の場合

do_action呼び出し元のソースコード
/templates/page-create-topics.php
<?php do_action( 'bbp_before_main_content' ); ?>
<?php do_action( 'bbp_template_notices' ); ?>
<?php if(is_bbpress_exist()): ?>
<?php while ( have_posts() ) : the_post(); ?>
<div id="bbp-new-topic" class="bbp-new-topic">
~~ 省略 ~~
<?php endif; ?>
<?php do_action( 'bbp_after_main_content' ); ?>
/templates/page-front-forums.php
<?php do_action( 'bbp_before_main_content' ); ?>
<?php do_action( 'bbp_template_notices' ); ?>
<?php if (is_bbpress_exist()): ?>
<?php while ( have_posts() ) : the_post(); ?>
<div id="forum-front" class="bbp-forum-front">
~~ 省略 ~~
<?php endwhile; ?>
<?php endif; ?>
<?php do_action( 'bbp_after_main_content' ); ?>
引数
なし
カスタマイズコード例
上記画像での出力例です。
function customize_bbp_before_main_content() {
echo '<div style="background:red;color:white">bbp_before_main_contentはここに表示できる</div>';
}
add_action('bbp_before_main_content', 'customize_bbp_before_main_content' );
function customize_bbp_after_main_content() {
echo '<div style="background:red;color:white">bbp_before_main_contentはここに表示できる</div>';
}
add_action('bbp_after_main_content', 'customize_bbp_after_main_content' );