owned mediaウェブ制作に役立つコンテンツを発信中!

bbPressのカスタマイズでオリジナルテーマの掲示板サイト作成(Tips編)

最終更新日: Update!!
当サイトのブログコンテンツであるデザインワークショップ【Suplog】にて、前回WordPressのbbPressというプラグインを使って掲示板サイトを作成する記事(「bbPressのカスタマイズでオリジナルテーマの掲示板サイト作成(導入編)」)を公開しました。今回は引き続き、bbPressのカスタマイズで使用できるコードなどを紹介していきたいと思います。  
bbPressプラグインのリファレンスを活用する
bbPressに関していうと日本語のリファレンスが少ないのが現状です。公式サイトにも掲載されておりますが、他のサイトでも内容が充実しているものもありますので、カスタマイズの際はこれらのサイトを参考にすると便利です。   【bbPress公式サイト】(https://codex.bbpress.org/) 【Bbpress  hookr.io】(http://hookr.io/plugins/bbpress/)   関数をはじめ、フィルターやフックなどbbPress固有のものがありますのでそれらを使用するようにしましょう。これらを使うことで色々な要件にも対応できるようになります。それでは次にbbPressカスタマイズに使えるTips集を紹介していきたいと思います。  
1. トピックの内容をループ表示させる
掲示板に上げるトピックの投稿は「topic」の投稿タイプになりますので、サブループなどで指定することでトピックの内容を表示できます。以下は全ての新着トピックを10件表示させる例になります。  
<?php
    $args = array(
        'posts_per_page' => 10,
        'post_type' => 'topic'
    );
    $the_query = new WP_Query( $args );
    if ( $the_query->have_posts() ) :
    while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<h1><?php the_title(); ?>
</h1>
<p><?php the_excerpt(); ?>
</p>
<?php endwhile; ?>
<?php else: ?>
<p>トピックはありません
</p>
<?php endif; ?> 
<?php wp_reset_postdata(); ?>
 
2. トピックが属するフォーラムのIDを取得してフォーラム名として出力する
トピックの表示に合わせてフォーラム名をラベルとして表示する時などに使えます。bbp_get_forum_parent_idという関数でフォーラムのIDを取得します。  
<span class="label">
<?php
    $forumId = bbp_get_forum_parent_id();
    if ( $forumId == 1 ) :
        echo 'フォーラム1' :
    else if ( $forumId ==  2 ) :
        echo 'フォーラム2' :
    else if ( $forumId ==  3 ) :
        echo 'フォーラム3' :
    end if;
?>
</span>
 
3. 投稿者をブログ上の表示名で出力する
トピックやリプライなどの投稿にひもづく投稿者の情報を取得し、ブログ上の表示名(display name)で出力する方法です。bbp_get_displayed_user_fieldという関数を使用します。  
<span class="author-display-name">
<?php echo bbp_get_displayed_user_field('display_name','display'); ?>
</span>
 
  いかがでしょうか、この他にもいろんな関数などが用意されておりますので、かなり柔軟なカスタマイズが可能になります。bbPressはデフォルトでも完成度が高い掲示板になっていますが、オリジナリティや必要とされる要件次第ではちょっとしたカスタマイズが求められる場面があると思いますので、ぜひ参考にしていただければと思います。    
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

comments

  • オガワ シンヤ

    2018.2.13
    そうでしたか、これは失礼いたしました、、 私自身もbbPressに関してはまだ知らない部分も多いのですが、 可能性が広がる素晴らしいプラグインだと思います。 これからも勉強を兼ねて貯まった知識はこちらのコンテンツで共有できればと考えております。 今後ともご愛読頂けますと幸いです。
  • nemo

    2018.2.12
    ご返信頂きましてありがとうございます。 リンクにつきましては「loop-single-reply.php」の中にあるそれらしい関数も色々と試している状況でしたので ご提示いただいたタグも試験済みで、同じ結果になっております。 リンク回りというよりはループの取得方法が問題だと思いますので、一から考えてみます。 質問にご回答頂き本当にありがとうございます、更新の程期待しております。
  • オガワ シンヤ

    2018.2.10
    nemoさん コメントありがとうございます。 また、いつも当サイトのブログを見ていただきありがとうございます。 さて、ご質問の件についてですが、 例に上がっているパーマリンクは「bbp_reply_url();」のテンプレートタグで出力できるかと思います。 また、該当箇所のテンプレートファイルは「loop-single-reply.php」でした。 新着返信を取得するループについては また後日アップできればと思います。
  • nemo

    2018.2.9
    突然のメッセージ申し訳ありません 本記事を参考にさせて頂いており非常に助かっております 不躾な質問になってしまい大変申し訳ないのですが、本記事にあるトピックのループの要領で返信(リプライ)の新着記事を該当トピックのスラッグ付きで取得したいのですが 下記コードで単一の記事しか取得できない状況です 5, 'post_type' =&gt; 'reply' ); $the_query = new WP_Query( $args ); if ( $the_query-&gt;have_posts() ) : while ( $the_query-&gt;have_posts() ) : $the_query-&gt;the_post(); ?&gt; &lt;a href=&quot;"&gt; </a> 例:HOMEURL/bbs/reply/返信ID/ 出力内容は問題ないのですが、このようなURLになり、意図するページにリンクできていません。 プラグイン純正のウィジェットで最近の返信というのは取得できるのですが、こちらだと出力内容が希望のものになりません、ただし以下のようにトピックページ内の該当部分にリンクできています。 例:HOMEURL/bbs/topic/トピックタイトル/#返信ID ループ内でアバターと投稿内容にこの形のリンクを付けたいのですが、該当箇所のbbpressファイルも見つからず、どのようなマークアップをしたら良いかわからない状況です 例のようなパーマリンクになるコード、若しくは新着返信を取得するbbpressの関数等ご存知でしたらご教授願いたいと思っております、bbpressを導入している他サイトを見ても私の希望の形で新着を表示しているサイトはありませんが、絶対に需要はあると思いますので、是非記事等に纏めて頂ければ非常に助かります、他の記事からも大変貴重な情報を頂いておりますので、今後とも楽しみにしております。

sponserd

    keyword search

    recent posts

    • Twitter
    • Github
    contact usscroll to top
      • Facebook
      • Twitter
      • Github
      • Instagram