プラグインなしで特定のカテゴリだけ記事一覧の表示順を変更する-wordpress

blog

wordpressでは、記事一覧の表示順はデフォルトで新着順になっているかと思います。

通常はそれで問題は無いのですが、例えばあるカテゴリが連載物のような感じになっている場合、そのカテゴリだけ古い順に表示させたいことがあります。

プラグインを使えば、そのようなことは可能なのですが、ここではプラグインなしで行って見たいと思います。

 

追加するコード

一例として、カテゴリIDが「2」と「12」のみ、投稿日が古い順に並ぶようにします。

この場合、以下のコードを、「function.php」に追記します。(私は、子テーマの「function.php」に書きました)

「function.php」を変更する場合、失敗するとサイト表示が真っ白になってしまう事があります。バックアップを取ってから変更して頂ければと思います。
function twpp_change_sort_order( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
if ( $query->is_category( array( 2, 12 ))) {
$query->set( 'order', 'ASC' );
$query->set( 'orderby', 'date' );
}

}
add_action( 'pre_get_posts', 'twpp_change_sort_order' );

*上記コードは、メインループにおける投稿の並び順を、タイトル・更新日・ランダムなど自由自在に変更する を参考にさせて頂きました。

 

変更したいカテゴリ

カテゴリIDを確認して、以下の「2」と「12」の部分に指定します。

is_category( array( 2, 12 )

カテゴリIDの確認方法は、wordpress管理画面の「投稿」→「カテゴリ」で、調べたいカテゴリにマウスを合わせると、プラウザの下にURLが表示されます。

そのURLの「tag_ID=」の後ろの数字がカテゴリIDです。

以下の図の場合は、カテゴリ名が「未分類」で、IDが「1」です。

 

カテゴリ

 

表示順序

表示させる順番は、以下の「ASC」の部分に指定します。

$query->set( ‘order’, ‘ASC‘ )

・DESC:新しい順(デフォルト)
・ASC :古い順

 

変更の条件

表示させる順番の条件は、以下の「date」の部分に指定します。

$query->set( ‘orderby’, ‘date‘ )

・title :タイトル順
・date :投稿日時順
・modified:更新日時順
・rand :ランダム表示
・comment_count:コメント数の順

 

こちらが古い順に並べた一例

 

wordpressの管理画面から、function.phpなどの.phpファイルを編集した場合、うまく動作しない時があります。

その際は、ftpソフトなどでいったん該当ファイルをローカルに保存して、そこで編集を行います。

編集した.phpを、ftpソフトなどで再度アップロードする事で正常動作する場合があります。

.phpを編集する際は、サクラエディタ が、エラーが少ないのではないかと思います。

上のエディタで保存する場合は、文字コード「UTF-8」、BOM「チェック無し」がエラーが少ないのでは無いかと思います。

sakuraediter

タイトルとURLをコピーしました