2013-12-03 3 views
1

Мне нужно создать пользовательскую структуру таксономии для моих сообщений. Я прочитал WP Codex и уверен, что смогу это сделать. Моя обычная таксономия будет иерархической.WordPress Пользовательские таксономические фильтры

Что мне нужно сделать, так это создать фильтр, основанный на этой новой таксономии. Мне нужно сделать это с помощью выпадающих ящиков.

Вот пример моей пользовательской таксономии будет:

  • Artlcles
    • Статья 1
    • Статья 2
    • Статья 3
  • Поправки
    • Поправка 1
    • Поправка 2
    • Поправка 3

Что мне нужно иметь 2 выпадающих коробки. Первый будет иметь все категории верхнего уровня (статьи, поправки и т. Д.), А затем, когда один из них будет выбран, он заполнит/сделает второй снимок со всеми подкатегориями.

Как я могу это достичь?

Он не позволил бы мне опубликовать это много кода, так что я должен изменить свой первоначальный вопрос ....

Этот код ниже, что у меня есть что на этой странице http://www.constitutingamerica.org/dev2

<?php $args = array(
    'show_option_all' => '', 
    'show_option_none' => '', 
    'orderby'   => 'ID', 
    'order'    => 'ASC', 
    'show_count'   => 1, 
    'hide_empty'   => 0, 
    'child_of'   => 0, 
    'parent'    => 0, 
    'exclude'   => '', 
    'echo'    => 1, 
    'selected'   => 0, 
    'hierarchical'  => 0, 
    'name'    => 'cat', 
    'id'     => '', 
    'class'    => 'postform', 
    'depth'    => 1, 
    'tab_index'   => 0, 
    'taxonomy'   => 'classification', 
    'hide_if_empty'  => false, 
    'walker'    => '' 
); 

$tax_menu_items = get_categories($args); ?> 

<form name="class-filter" method="get" > 
<select name="class-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;"> 
<option value="">Select</option> 
<? foreach ($tax_menu_items as $tax_menu_item): ?> 
    <option value="<?php echo get_term_link($tax_menu_item,$tax_menu_item->taxonomy); ?>"><?php echo $tax_menu_item->name; ?></option> 
<?php endforeach; ?> 
</select> 

<?php 
$sub_tax_id = $wp_query->get_queried_object_id(); 
if(isset($sub_tax_id)) { 
$args2 = array(
    'show_option_all' => '', 
    'show_option_none' => '', 
    'orderby'   => 'ID', 
    'order'    => 'ASC', 
    'show_count'   => 1, 
    'hide_empty'   => 0, 
    'child_of'   => 0, 
    'parent'    => $sub_tax_id, 
    'exclude'   => '', 
    'echo'    => 1, 
    'selected'   => 0, 
    'hierarchical'  => 0, 
    'name'    => 'cat', 
    'id'     => '', 
    'class'    => 'postform', 
    'depth'    => 1, 
    'tab_index'   => 0, 
    'taxonomy'   => 'classification', 
    'hide_if_empty'  => false, 
    'walker'    => '' 
); 

$tax_menu_items2 = get_categories($args2); ?> 

<select name="class-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;"> 
<option value="">Select</option> 
<? foreach ($tax_menu_items2 as $tax_menu_item2): ?> 
    <option value="<?php echo get_term_link($tax_menu_item2,$tax_menu_item2->taxonomy); ?>"><?php echo $tax_menu_item2->name; ?></option> 
<?php endforeach; ?> 
</select> 

<? } ?> 
</form> 

I так близко. Моя проблема заключается в том, что при выборе второго поля он переустанавливает второй блок на ту же самую таксономию родителя, что и первый квадрат. Как я могу получить эту вторую каплю, чтобы сохранить все свои исходные таксономии?

+0

Пожалуйста, разместите код, который вы уже пробовали. – PhearOfRayne

+0

Я еще не разработал код. –

ответ

0

Включить категории для пользовательского типа сообщений. Вам нужно будет скрыть мета-окно выбора категории по умолчанию и создать свой собственный.

Для кода вы хотите получить все категории родительского уровня и создать раскрывающееся меню. После выбора категории вы хотите использовать AJAX для получения списка категорий для выбранного родителя.

Код для сохранения CPT должен будет просмотреть ваши выпадающие списки, чтобы определить фактическую категорию, к которой она принадлежит, и соответствующим образом отобразить ее пользователю.

+0

Это не CPT, это просто дополнительная таксономия, добавленная к обычным сообщениям. Я могу создать начальное раскрытие и заполнить его элементами верхнего уровня, но как передать это второму раскрывающемуся списку, которое заполняется на основе какой родительской категории выбрано? –

+0

Мой ответ должен применяться, если он является обычным типом WP Post. Вы должны быть знакомы с jQuery, чтобы попытаться это сделать, но при создании собственного раскрывающегося списка вам придется привязать код к измененному событию ... захватите выбранный идентификатор категории (значение выпадающего списка) и выберите (через AJAX) список подкатегорий, чтобы заполнить второе падение. –

+0

Это, наверное, довольно уродливо, но это то, что у меня есть. [код] –

Смежные вопросы