ドロップダウンメニューを含むフォームがあります。このフォームはform.php
ページにあり、私のテーマの一部ではありません。私のサイトの外にあります。このドロップダウンメニューには、Formatsというカスタム分類法の値の一覧があります。 Myフォーマットは次のとおりです。
Entry Form
Facebook
- Entry Form
- Page
Twitter
これが私のコードです。
<?php include("wp-blog-header.php"); ?>
<?php
global $wpdb;
$getFormats = $wpdb->get_results($wpdb->prepare("
SELECT * FROM wp_terms p
LEFT OUTER JOIN wp_term_taxonomy t ON p.term_id = t.term_id
WHERE t.taxonomy = 'format'
")); ?> // This gets all the values for the format taxonomy
<form> //start form
<select name="format"> //start dropdown
<?php
foreach ($getFormats as $format) { //spit out the formats
echo "<option value='".$format->name."'>".$format->name."</option>";
} ?>
</select> //end dropdown
</form> // end form
?>
これまでのところ、私のドロップダウンは次のようになっています。
Entry Form
Facebook
Entry Form
Page
Twitter
最初の質問:階層を固定する(つまりインデントを保持する)にはどうすればよいですか。
私のHTML出力は次のとおりです。
<option value="Entry Form">Entry Form</option>
<option value="Facebook">Facebook</option>
<option value="Entry Form">Entry Form</option> // <---- this is gonna be a problem
<option value="Page">Page</option>
<option value="Twitter">Twitter</option>
2番目の質問:Entry Formの2番目のインスタンスの出力は最初のインスタンスと同じです。明らかに、これはフォームを送信するための問題になるでしょう。どうやってこれをユニークにすることができますか?
標準の WordPress関数を使用して、すでにフォーマットされているドロップダウンを取得し、両方の問題を一度に解決できます。
そのようです:
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' => 'category',
)
);
出力:
<select name='cat-dropdown' id='cat-dropdown' class='postform' >
<option value='-1'>None</option>
<option class="level-0" value="2">Other</option>
<option class="level-0" value="1">Uncategorized</option>
<option class="level-1" value="4"> Other</option>
<option class="level-2" value="5"> Other</option>
</select>
デフォルトのカテゴリの場合: