Q.カテゴリーページで固定表示の投稿が先頭にならない
投稿の編集画面で「この投稿を先頭に固定表示」にチェックを入れています。投稿一覧では先頭に表示されるのですが、カテゴリーを指定したアーカイブページでは先頭になりません。カテゴリーアーカイブでも固定表示の投稿を先頭に出す方法はありますか?
A.functions.phpにコードを追加することで対応可能です
カテゴリーアーカイブページの並び順は、標準では「固定表示」の設定が反映されない仕様となっています。子テーマのfunctions.phpに以下のコードを追加することで、カテゴリーアーカイブでも固定表示の投稿を先頭に表示できます。
/**
* カテゴリーアーカイブで固定投稿を先頭に表示
*/
add_filter( 'posts_orderby', function( $orderby, $query ) {
if ( is_admin() || ! $query->is_main_query() || ! $query->is_category() || $query->is_feed() ) {
return $orderby;
}
$sticky_posts = array_map( 'absint', (array) get_option( 'sticky_posts', [] ) );
if ( ! $sticky_posts ) {
return $orderby;
}
global $wpdb;
return 'CASE WHEN ' . $wpdb->posts . '.ID IN (' . implode( ',', $sticky_posts ) . ') THEN 0 ELSE 1 END, ' . $orderby;
}, 10, 2 );
子テーマのfunctions.phpは親テーマを上書きするものではなく、親子両方が読み込まれるため、このように機能追加のコードを直接記述できます。別ファイルに分ける必要はありません。
この記事は役に立ちましたか?
もし参考になりましたら、下のボタンで教えてください。
今後の記事作成の参考とさせて頂きます!