2016-04-09 6 views
0

私はカスタム(私のコースのコピー)/wp-includes/widgets/class-wp-widget-categories.phpを編集して、私のカスタムの内容を表示させました$ cat_argsの終わりにちょうど(WP 4.2.2から、元のファイルと同様に#59)、単一の行を追加することにより、分類=配列();,ので、今それが標準のWordPress 4.4.2カテゴリウィジェットを変更してカスタムタクソノミを表示

$cat_args = array(
     'orderby'  => 'name', 
     'show_count' => $c, 
     'hierarchical' => $h, 
     'taxonomy'  => 'my_taxonomy' 
    ); 

この時点では本当に難しい何も読み込みます新しいウィジェットがリストとして設定されている間は、すべてが意図どおりに機能します。

ドロップダウンリストのすべての項目が存在しないURLを指しているため、ドロップダウンメニューとして表示する新しいウィジェットを設定した直後にすべてが失われます。私の経験レベルとして

は、問題は、このように、元のウィジェット

$dropdown_id = ($first_dropdown) ? 'cat' : "{$this->id_base}-dropdown-{$this->number}"; 

のライン#62のどこかに隠して、私は見ることができます(それはゼロ実際には少ないが。しかし、私は学んでいる!あります)私の意見では#82行で始まるJSに従ってドロップダウンリスト項目の値を設定するための責任があります。

私はライン#88自分で

my_taxonomy/ 

?cat= 

を交換することができるよ、私は$のdropdown_id変数に正しい値を配置する必要があります。

これは私の問題です。

誰でも手伝いできますか?

答えて

0

自分自身で解決策を見つけたので、誰かが同じ問題に直面する可能性がある場合に備えて、私自身の質問に答えます。

それは、不可能は、その古代のバグや機能に、Walker_CategoryDropdownクラスに少し変更を加えることなく、カスタム分類法で動作するようにwp_dropdown_categories()を強制することです。

/wp-includes/class-walker-page-dropdown.phpにあるWalker_CategoryDropdownクラスを変更する必要があります。

元のclass-walker-page-dropdown.phpを保持するには、その内容をプラグインファイルにコピーする必要があります。それから私は、 "「=の代わりにカテゴリIDの分類スラグを取得し、<option>の値にそれを置くように変更クラスができるようにするために

$args['value_field'] = 'slug'; 

と行48で見つかった

$args['value_field'] = 'ID'; 

を交換する必要があります私の新しいウィジェットの言葉。

は、それから私は、行1、47および49を削除し、新たに別のクラスとして、この変更を定義するために

class custom_walker_dropdown extends Walker_CategoryDropdown { 

class Walker_PageDropdown extends Walker { 

を交換しました。

最後にWPのネイティブカテゴリウィジェットに基づいて新しいウィジェットでwp_dropdown_categories()のウォーカーとして新しいクラスを設定しました。

新しいウィジェットのリスト部分を壊すので、新しいクラスウィジェットを設定しないようにしました。custom_walker_dropdownクラスは、wp_dropdown_categories()のウォーカーだけに設定する必要があります。

最後のステップは、このドロップダウンメニューの作業のためのJSが責任を作るために

if (dropdown.options[ dropdown.selectedIndex ].value !== 0) { 

/wp-includes/widgets/class-wp-widget-categories.php

if (dropdown.options[ dropdown.selectedIndex ].value > 0) { 

の私の修正されたコピーの行87を交換することです。

ビンゴ!すべてが機能します。

実際には、ウォーカーズの数多くのものがありますが、私にとっては、オリジナルのクラスを取り、少し修正することが最善の方法です。

+0

私は私の元の質問で、 '?cat ='を 'my_taxonomy /'に置き換えると述べました。進入禁止。 permalinksをオフにしても問題がないことを確認するには、 '?cat ='を '?my_taxonomy ='に置き換える必要があります。 – YKKY

1

質問は非常に不明です。しかし、このメソッドを使用してカテゴリであるカスタム分類にアクセスする場合は、表示されません。カスタムタクソノミーを表示する手順は大きく異なります。

+0

実際、この方法は完全に機能します。自分で試してみてください。 ) – YKKY

+0

私はこの段階を経ました。最も効率的な方法は、カスタム分類を別の方法で使用することです。いくつかの異なるファイルを使用する必要があります。 –

+0

このメソッドがWPで実装されていて、完璧に動作し、達成するためにほとんど何の努力も必要ないのはなぜですか? – YKKY

関連する問題