私は最近、このようなカテゴリのドロップダウンリストを挿入できることを発見しました。
define( 'WP_USE_THEMES', false );
require( './wp-load.php' );
wp_dropdown_categories( array(
'child_of' => 0,
'class' => 'postform',
'depth' => 0,
'echo' => 1,
'exclude' => '',
'hide_empty' => false,
'hide_if_empty' => false,
'hierarchical' => true,
'id' => '',
'name' => 'cat-dropdown',
'order' => 'ASC',
'orderby' => 'name',
'selected' => 0,
'show_count' => 0,
'show_option_all' => '',
'show_option_none' => __('None'),
'tab_index' => 0,
'taxonomy' => 'format',
) );
これは素晴らしいことですが、複数のカテゴリを選択したい場合はどうすればよいですか。
私はwp_category_checklist()
に出会い、このコードを試しました:
function wp_category_checklist(
$post_id = 0,
$descendants_and_self = 0,
$selected_cats = false,
$popular_cats = false,
$walker = null,
$checked_ontop = true
) {
wp_terms_checklist( $post_id, array(
'taxonomy' => 'category',
'descendants_and_self' => $descendants_and_self,
'selected_cats' => $selected_cats,
'popular_cats' => $popular_cats,
'walker' => $walker,
'checked_ontop' => $checked_ontop
) );
}
しかし、何も出力されません。
サイドバーや投稿内ではなく、空白のページで自分のカテゴリのリストを取得しようとしています。それは可能ですか?
これが私が終わった答えです:
$select_cats = wp_dropdown_categories( array( 'echo' => 0 ) );
$select_cats = str_replace( "name='cat' id=", "name='cat[]' multiple='multiple' id=", $select_cats );
echo $select_cats;
それは私の質問に従って複数選択することができる私のカテゴリのリストを表示します。これはwp_dropdown_categories
のハックですが、うまくいきます。
関数wp_terms_checklist
はファイル/wp-admin/includes/template.php
で定義されているので、Wordpressの管理者側でのみ利用可能です。
チェックボックスで複数のカスタム分類法を選択したい場合。そのコードを使うことができます。
$html .= wp_dropdown_categories( array(
'taxonomy' => 'taxonomy_name',
'hierarchical' => 0,
) );
$html = str_replace( "form id=", "form multiple='multiple' id=", $html );
$html = str_replace( "select", "span", $html );
$html = str_replace( "option class=", "input type='checkbox' class=", $html );
$html = str_replace( "option", "", $html );
$html = str_replace( "</>", "<br/>", $html );
echo $html;
そしてTfあなたはチェックボックスで複数のカテゴリを選択したいです。そのコードを使うことができます。
$html = wp_dropdown_categories( array( 'echo' => 0, 'hierarchical' => 0 ) ); // Your Query here
$html = str_replace( "form id=", "form multiple='multiple' id=", $html );
$html = str_replace( "select", "span", $html );
$html = str_replace( "option class=", "input type='checkbox' class=", $html );
$html = str_replace( "option", "", $html );
$html = str_replace( "</>", "<br/>", $html );
echo $html;