WP: カスタム分類タクソノミーのドロップダウンをサイドバー

Quick Edit Pencil

WordPress WP_DROPDOWN_CATEGORIES カスタム分類タクソノミーをドロップダウンする。


(PHP Code Widgetで追加したウィジェットに書く)

オプションvalueはidは効かないので必ずslugとする。
子のみの問題だがリンクアドレスの日本語がエンコード(パーセント化)されて表示されるので、オプションvalueをデコードしてある。
selectedであるがwp_dropdown_categoriesのパラメータに指定することで実現できるが、オプション値のslugをデコードしているのでうまく働かないので、selectedはJavascriptで処理してある。

<?php 
// PHPコード:wp_dropdown_categories
// 指定されたタクソノミーに含まれるタームをドロップダウンリストにして表示。
// (PHP コードを有効にするプラグインを併用すると、ウィジェットの中でも使える。)

// パラメーター設定
$taxonomy         = 'object';
$orderby          = 'name'; 
$show_count       = 1;      // 表示するなら 1、しないなら 0
$pad_counts       = 1;      // 子孫のカウントも合計するなら 1、しないなら 0
$hierarchical     = 1;      // 階層表示するなら 1、しないなら 0
$title            = '';
$name_suffix      = '_dd';  // ドロップダウンメニューのフォーム名の接尾辞、nameの重複を防ぐ目的で。
$show_option_none = '資料を選択'; // 先頭のオプション値
$value_field      = 'slug'; // オプションのvalue値
$args = array(
  'taxonomy'         => $taxonomy,
  'orderby'          => $orderby,
  'show_count'       => $show_count,
  'pad_counts'       => $pad_counts,
  'hierarchical'     => $hierarchical,
  'title_li'         => $title,
  'name'             => $taxonomy.$name_suffix,
  'show_option_none' => $show_option_none,
  'value_field'      => $value_field
);

// HTML記述JavaScript用
$dropdown_id      = $taxonomy.$name_suffix;
// selected on JavaScript用
$current_term     = get_query_var($taxonomy);
?>

<form id="object-select" class="object-select" action="<?php echo esc_url( home_url( '/' ) ); ?>" method="get">
<?php wp_dropdown_categories( $args ); ?>
</form>

<script type='text/javascript'>
/* <![CDATA[ */
(function() {
 var dropdown = document.getElementById( "<?php echo esc_js( $dropdown_id ); ?>" );
    dropdown.name = "<?php echo esc_js( $taxonomy ); ?>";
    for( var i = 0; i < dropdown.length; i++ ){
        if( /%/.test(dropdown.options[i].value) ){
            dropdown.options[i].value = decodeURI( dropdown.options[i].value );
        }
        if( /^<?php echo esc_js( $current_term ); ?>$/.test(dropdown.options[i].value) ){
            dropdown.options[i].selected = true;
        }
    }
 function onObjChange() {
  if ( !/^-1$/.test(dropdown.options[ dropdown.selectedIndex ].value) ) {
   dropdown.parentNode.submit();
  }
 }
 dropdown.onchange = onObjChange;
})();
/* ]]> */
</script>

このブログの人気の投稿

PowerShellのGetDetailsOf メソッドでプロパティの詳細情報のID番号と項目名を列挙します

ヤバい!JAPANNEXT WQHD対応 27型ワイド液晶ディスプレイ「JN-IPS2716WQHD」を注文してみた!!!

書字方向 横書方向変換スクリプト 左書きから右書きへ(コピペ用途)

Blender Illustrator のパスを取り込む

Blender: 辺の長さを数値で指定するアドオン

AppleScript 改行 コード 置換

簡単 YouTube動画をダウンロード、音声のみ保存する方法 2019

Automatorの変数をAppleScript内で使う