1

カスタムフィールドとWordpress分類法を使用して、製品システムのWordPressで製品サブカテゴリとサブカテゴリを取得しています。ただし、使用しているドロップダウン ボックスに問題があり、カテゴリを取得しています。

構造は次のようになります。

 1 Main Category
 ..2 Sub Category
 ....3 Sub-Sub Category
 .......4 Product
 ....3 Sub-Sub Category
 ....3 Sub-Sub Category
 ..2 Sub Category
 ....3 Sub-Sub Category
 ..2 Sub Category
 ....3 Sub-Sub Category

「1 メイン カテゴリ」は私の分類法であり、単に製品をグループ化するためのものです 「2 サブ カテゴリ」は製品をさらにグループ化するためのものです 「3 サブサブ カテゴリ」は製品が実際に分類されるカテゴリです

CMS のドロップダウン ボックス用にレンダリングされた HTML は次のようになります。

<select name="fields[field_50cb3df056694][]" id="fields[field_50cb3df056694]" class="taxonomy-field">
  <option value="12">Cooking Wine</option>
  <option value="16">&nbsp;&nbsp;&nbsp;Red Wine</option>
  <option value="17">&nbsp;&nbsp;&nbsp;White Wine</option>
  <option value="11">Milk</option>
  <option value="20">&nbsp;&nbsp;&nbsp;Full Fat</option> 
  <option value="19">&nbsp;&nbsp;&nbsp;Fully Skimmed</option>
  <option value="18">&nbsp;&nbsp;&nbsp;Semi Skimmed</option>
  <option value="9">Oils</option>
  <option value="21">&nbsp;&nbsp;&nbsp;Olive</option>
  <option value="23">&nbsp;&nbsp;&nbsp;Rapeseed</option>
  <option value="22">&nbsp;&nbsp;&nbsp;Sunflower</option>
  <option value="8">Sauces</option>
  <option value="14">&nbsp;&nbsp;&nbsp;Cheese Sauces</option>
  <option value="15">&nbsp;&nbsp;&nbsp;Pasta Bakes</option>
  <option value="13">&nbsp;&nbsp;&nbsp;Tomato Sauces</option>
  <option value="10">Tinned</option>
  <option value="24">&nbsp;&nbsp;&nbsp;Beans</option>
</select>

このドロップダウン ボックスのサブカテゴリをクリックできないようにする方法を考えています。ユーザーが「サブサブカテゴリ」の下に製品を配置できるようにしたいだけです。

2 つのレベルを区別する方法に苦労しています (私が考えることができる唯一のことは、ドロップダウン ボックスのオプションに「 」が含まれていない場合、ユーザーが選択できないようにするという JQuery IF ステートメントです。

私のJQueryの理解は、これを行うには十分に進んでいません(JQueryが私が望むものを達成するための最も明白な方法であることを知っている限り)。この時点で少し行き詰まっており、ユーザーが間違った領域に製品をグループ化することを望まないので、助けていただければ幸いです。

[編集] functions.php で JQuery をロードするスクリプト:

<?php
add_action('admin_enqueue_scripts','load_dropdown_script');
function load_dropdown_script( $hook ){
    wp_enqueue_script( 
        'dropdown', //unique handle
        get_template_directory_uri().'/js/dropdown.js', //location
        array('jquery')  //dependencies
     );
}
?>

Jクエリ:

http://jsfiddle.net/Pp7Ey/

クロム エラー:

Uncaught SyntaxError: Unexpected token ILLEGAL
​     <--this

無駄に取り除くためにこれを試しました:

http://jsfiddle.net/djfdc/

-ありがとう、マット。

4

1 に答える 1

2

ここではjQueryを使用する必要はないと思います。HTMLには「optgroup」タグがあります-http ://www.w3schools.com/tags/tag_optgroup.asp

したがって、wp_dropdown_categories関数を介してドロップダウンリストを取得している場合は、次のようなことを行うことができます。

$select = wp_dropdown_categories('hide_empty=0&hierarchical=1&echo=0'); 
$select = preg_replace("#<option class=\"level-[01]\"([^>]*)>(.*)</option>#", "<optgroup label=\"$2\"></optgroup>", $select);
echo $select;

Wordpressはクラス「level-1」/「level-2」などを追加し、正規表現で変更できます。

アップデート。jQueryを使用する場合は、次の方法で実行できます。

$('select.taxonomy-field option').each(function() {

   var optionText = $(this).html();

   //if there are 3 spaces (&nbsp;), then it is our product. 
   //otherwise replace option tag with optgroup
   var m = optionText.match(/(&nbsp;){3}(.*)/g);

   if (!m)
       $(this).replaceWith('<optgroup label="'+optionText+'"></optgroup>');

});​

http://jsfiddle.net/Pp7Ey/

于 2012-12-17T10:55:45.387 に答える