【WordPress】管理画面ウィジェットで特定の任意の記事をサイドバーに出す

どうも、くまだです。

今回は案件やタスクで使ったネタをひとつ。

プラグインを使わずに、サイドバーに特定の記事を出したい場合で、管理画面から任意の記事を出力できるようにする感じです。

ウィジェットで特定の任意の記事をサイドバーに出す

手順としては下記の順。

  1. functions.phpにウィジェット登録
  2. ウィジェットのテキストウィジェットにPHPコードを記述できるようにする
  3. サイドバーに登録したウィジェットを表示する
  4. 出したい記事をテキストウィジェットにPHPコードで記述

functions.phpにウィジェット登録

ウィジェットとして使えるようにするために、functions.phpに以下の記述。

function custom_widget_register()
{
    register_sidebar([
    'name' => 'サイドバーウィジェットエリア',
    'id' => 'sidebar-widget',
    'description' => 'サイドバーウィジェット',
    'before_widget' => '<div class="widget-box">',
    'after_widget' => '</div>',
    'before_title' => '',
    'after_title' => '',
    ]);
}
add_action('widgets_init', 'custom_widget_register');

これで管理画面のウィジェットのところで、サイドバーウィジェットエリアが追加されます。

ウィジェットでPHPコード記述できるようにする

ウィジェットでPHPコードを記述できるように下記の記述。

〇参考記事

function widget_text_exec_php( $widget_text ) {
    if( strpos( $widget_text, '<' . '?' ) !== false ) {
        ob_start();
        eval( '?>' . $widget_text );
        $widget_text = ob_get_contents();
        ob_end_clean();
    }
    return $widget_text;
}
add_filter( 'widget_text', 'widget_text_exec_php', 99 );

これで「テキストウィジェット」でPHPコードを記述できるようになります。

サイドバーに登録したウィジェットを出す

サイドバーに、functions.phpで登録したウィジェットを出力します。

sidebar.phpに、出力したい場所に下記の記述。

<?php dynamic_sidebar( 'sidebar-widget' ); ?>

dynamic_sidebarの()の中は、登録したウィジェットのidをいれます。

ウィジェットに任意の記事を登録

管理画面のテキストウィジェットを、登録した「サイドバーウィジェットエリア」にいれれ、テキストウィジェットに例えば下記のように記述。

    <a href="<?php echo get_permalink(記事idいれる); ?>">
      <div class="side-imgbox">
      <?php echo get_the_post_thumbnail(記事idいれる); ?>
      </div>
    </a> 

特定の記事を入れたい場合、get_permalinkの()の中に記事idをいれます。サムネイルも出した場合は、get_the_post_thumbnailの()の中にも記事idをいれます。

これでサイドバーに特定の記事が出力されます。違う記事を出したい場合は、管理画面から記事idを変更すれば可能です。

ここまで読んでくださりありがとうございました。

この記事を書いた人