WordPress

wp_dropdown_categoriesのoptionタグのvalue値をカテゴリーIDからslugに変更する方法

記事内に商品プロモーションを含む場合があります

ふー。今週の業務も今日で終わりです。
今は職場の昼休み時間。昼食後このエントリーを書きかけています。帰宅した後で仕上げようかな・・・

というわけで、今回のエントリーもWordPress関係です。
カテゴリーの一覧をselectタグで出力してくれる関数「wp_dropdown_categories」のカスタマイズです。

この関数ですが、以下のように普通に使うと、下のようなタグが出力されます。

<select class="postform" name="cat">
<option class="level-0" value="2">Web制作</option>
<option class="level-1" value="5">WordPress</option>
<option class="level-1" value="6">jQuery</option>
<option class="level-1" value="7">PHP</option>
<option class="level-1" value="10">SNS</option>
<option class="level-1" value="12">Blog</option><!-- 以下省略 -->
</select>

ここで出力されるvalue属性のデータは標準ではカテゴリーIDとなります。このvalue値をカテゴリーIDからそのカテゴリーのslugに変更するのが今回紹介するカスタマイズです。

↓こんな感じにしたいのですよ。

<select id="cat" class="postform" name="cat">
<option class="level-0" value="webproduce">Web制作</option>
<option class="level-1" value="wordpress">WordPress</option>
<option class="level-1" value="jquery">jQuery</option>
<option class="level-1" value="php">PHP</option>
<option class="level-1" value="sns">SNS</option>
<option class="level-1" value="blog">Blog</option>
<!-- 以下省略 -->
</select>

valueの値がカテゴリーのslugになっています。

それでは具体的な方法について説明します。

【注意】
このカスタマイズはWordPressのシステムのファイルを変更するものです。作業を行う前に編集対象のファイルのバックアップを取ることをお勧めします。またこのカスタマイズを行った後でWordPressの自動アップデートなどをすると、正常に動作しなくなる可能性があります。

さて、ここで編集するファイルは、

「wp-includes/category-template.php」

というファイルです。
このファイルの958行目以降にある関数「start_el」が変更対象のソースコードです。
標準では↓のようになっています。

function start_el( &amp;$output, $category, $depth = 0, $args = array(), $id = 0 ) {
  $pad = str_repeat(' ', $depth * 3);
  $cat_name = apply_filters('list_cats', $category-&gt;name, $category);
  $output .= "tterm_id.""";
  if ( $category-&gt;term_id == $args['selected'] )
    $output .= ' selected="selected"';
  $output .= '&gt;';
  $output .= $pad.$cat_name;
  if ( $args['show_count'] )
    $output .= '  ('. $category-&gt;count .')';
  $output .= "n";
}

このコードを以下のように修正します。

function start_el( &amp;$output, $category, $depth = 0, $args = array(), $id = 0 ) {
  $pad = str_repeat(' ', $depth * 3);
  $cat_name = apply_filters('list_cats', $category-&gt;name, $category);
  // valueの値でslugを出力
  //$output .= "tterm_id.""";
  $output .= "tslug.""";
  // 選択状態の条件を変更
  //if ( $category-&gt;term_id == $args['selected'] )
  if ($value === (string) $args['selected'] )
    $output .= ' selected="selected"';
  $output .= '&gt;';
  $output .= $pad.$cat_name;
  if ( $args['show_count'] )
    $output .= '  ('. $category-&gt;count .')';
  $output .= "n";
}

コメントアウトした部分がカスタマイズ前のコードです。
ハイライトされている6行目と9行目がカスタマイズのコードです。

このようにすることで、optionタグ内のvalue値にカテゴリーslugを出力することができます。

まだあまり詳しく見ていないのですが、どうやらcategory-template.phpに書かれている、wp_dropdown_categories関係のクラスをoverrideする方法だと、functions.php内での追加記述で同じカスタマイズができるような気がします。このカスタマイズについてはもうちょっと調査を続けてみることにします。

===

コレカラウェブではWebライティングのお仕事を承っております。豊富な実務経験や国家資格を生かして、SEOに強い完全オリジナルな文章を作成いたします。公式noteにてポートフォリオを掲載していますので、こちらも併せてご覧ください。ご相談・ご依頼はお問い合わせページからお願いいたします!

「いいね!」と思ったら、クリックお願いいたします<m(__)m>
にほんブログ村 小遣いブログ Webライター・ブログライターへ にほんブログ村 IT技術ブログ SEO・SEMへ にほんブログ村 小遣いブログ ブログアフィリエイトへ
ABOUT ME
らぐち
コレカラブログ管理人のらぐちです。コレカラウェブという屋号でフリーランスとして、Webライティング・SEOコンサルティング・メディア運営・障害者支援のお仕事を一貫して承ってきました。このブログではコレカラウェブのお仕事で得たノウハウやテクニックを詳しく紹介しています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA