どうも、くまだです。
今回は案件やタスクで使ったネタをひとつ。
プラグインを使わずに、サイドバーに特定の記事を出したい場合で、管理画面から任意の記事を出力できるようにする感じです。
ウィジェットで特定の任意の記事をサイドバーに出す
手順としては下記の順。
- functions.phpにウィジェット登録
- ウィジェットのテキストウィジェットにPHPコードを記述できるようにする
- サイドバーに登録したウィジェットを表示する
- 出したい記事をテキストウィジェットに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を変更すれば可能です。
ここまで読んでくださりありがとうございました。