【WordPressカテゴリー順番】functions.phpで設定しました

WordPressのカテゴリーはプラグインで設定するのはやめて「functions.php」で設定しました。

プラグインを使う場合は「Category Order and Taxonomy Terms Order」が使いやすい。

プラグインSimple Custom Post Orderはカテゴリが多い場合は使いにくい

まず、「functions.php」は空白が入っただけでサイトが表示されなくなりますので、必ずバックアップを取っておきます。

カテゴリーの編集をクリック。

「説明」のところに並べたい順番に数字を入力していきます。後から簡単に順番が変更できるよう「10 20 30」など緩い数字が良いです。

こんな風にしました。

次に、子テーマの「functions.php」にコードを追記して「ファイルを更新」をクリックします。

//category
defined( 'USE_CATEGORY_DESCRIPTION_ORDER' ) or define( 'USE_CATEGORY_DESCRIPTION_ORDER', true );
defined( 'CATEGORY_DESCRIPTION_ORDER_ON_ADMIN' ) or define( 'CATEGORY_DESCRIPTION_ORDER_ON_ADMIN', true );

function optimize_category_description( $description ) {
if ( ! empty( $description ) && strpos( $description, ';' ) !== true ) {
list( ,$_parse_description ) = explode( ';', $description, 2 );
$description = trim( $_parse_description );
}
return $description;
}

add_filter( 'get_terms', function( $terms, $taxonomies, $args, $term_query ) {
$_is_run = is_admin() ? ( CATEGORY_DESCRIPTION_ORDER_ON_ADMIN ? true : false ) : true;
if ( $_is_run && in_array( 'category', $taxonomies ) ) {
// Category order by prepended number in description
$_tempOrder = [];
foreach ( $terms as $_idx => $term_obj ) {
if ( ! empty( $term_obj->description ) && strpos( $term_obj->description, ';' ) !== true ) {
list( $_order_num, $_parse_description ) = explode( ';', $term_obj->description, 2 );
$_tempOrder[] = intval( trim( $_order_num ) );
if ( ! is_admin() ) {
$terms[$_idx]->description = trim( $_parse_description );
}
} else {
$_tempOrder[] = 0;
}
}
$_maxOrder = count( $_tempOrder ) > 0 ? max( $_tempOrder ) : 1;
if ( USE_CATEGORY_DESCRIPTION_ORDER && $_maxOrder > 0 ) {
foreach ( $_tempOrder as $_idx => $_order ) {
if ( $_order == 0 ) {
$_maxOrder++;
$_tempOrder[$_idx] = $_maxOrder;
} else {
$_tempOrder[$_idx] = $_order;
}
}
array_multisort( $_tempOrder, $terms );
// Remove categories if it has minus ordered
if ( ! is_admin() ) {
foreach ( $_tempOrder as $_idx => $_order ) {
if ( $_order < 0 ) {
unset( $terms[$_idx] );
}
}
}
}
}
return $terms;
}, PHP_INT_MAX, 5 );

◆プラグイン不要! 説明欄を使ってカテゴリーの並び順を変える方法 – Monaural Soundさんのコードを使わせていただきました。ありがとうございます!

無事に順番通りに並べることができました!


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