категории в выпадающем списке WP

H
На сайте с 02.11.2009
Offline
43
2048

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

Для первого списка код такой:

<label>Раздел</label><div class="input">

<select name="razdel">

<option selected value="">Все разделы</option>

<?php

$categories = get_categories($cat);

if ($categories) {

foreach ($categories as $category) {

$option = '<option value="'.$category->category_nicename.'">';

$option .= $category->cat_name;

$option .= ' ('.$category->category_count.')';

$option .= '</option>';

echo $option;

}

}

?>

</select></div>

Но отображаются не все рубрики, а только несколько.

Буду очень благодарен за любую помощь!!!

Polkan
На сайте с 28.09.2005
Offline
102
#1

hamel, используйте wp_list_categories()

WordPress-плагин для Apishops (http://p-api-shop.ru/) P-API-Shop WooCommerce-плагин для Apishops (http://woo-apishops.ru/) Woo-Apishops
H
На сайте с 02.11.2009
Offline
43
#2
Polkan:
hamel, используйте wp_list_categories()

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

Выпадающий список в форме:

<select id="gorod" name="gorod">

<option value="kovrov">Ковров</option>

<option value="Владимир">Владимир</option>

</select>

функция:

add_action('pre_get_posts', 'search_by_tag');

function search_by_tag() {

global $wp_query;

if (is_search()) {

$meta_key = ‘gorod’;

$meta_value = intval($_GET['gorod']);

$wp_query->query_vars['meta_key'] = $meta_key;

$wp_query->query_vars['meta_value'] = $meta_value;

}

H
На сайте с 02.11.2009
Offline
43
#3

В общем сделал форму поиска по произвольному полю и категориям, все работает и это уже хорошо, долго искал решение... Но остался еще один вопрос, как сделать выпадающий список дочерних категорий выбранной в первом списке рубрики. Т.е. как я понимаю надо без перезагрузки страницы считать ID категории выбранной в первом списке, записать в переменную $a и указать для второго списка child_of=$a. Но как это реализовать???

Вот имеющийся код:

<form name="search" action="" method="get">

<input type="text" value="" name="search" id="s" />

<?php wp_dropdown_categories( 'show_option_all=Все категории...' ); ?>

<select name="gorod">

< ?php

$metakey = 'gorod';

$gorod = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );

if ($gorod) {

foreach ($gorod as $gorod) {

echo "<option value="Ковров">Ковров</option><option value="Александров">Александров</option>";

}

}

?>

</select>

<input type="submit" value="Поиск" />

</form>

<?php

$counties = $_GET['gorod'];

$categor = $_GET['cat'];

$search = $_GET['search'];

if ($counties) {

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args=array(

's'=>$search,

'cat'=>$categor,

'meta_value' => $counties,

'paged'=>$paged,

);

query_posts($args);

}

else {

query_posts('cat=19&posts_per_page=4');

}

if ($counties) { ?>

<h3>Результат поиска по - <?php echo $counties; ?></h3>

<?php } else { ?>

<h3>Недавно добавленные</h3>

<?php }

if (have_posts()) : while (have_posts()) : the_post();

$event_gorod = get_post_meta($post->ID, 'gorod', true); ?>

<div class="entry">

<h2><a href="</php the_permalink(); ?>" title="< ?php the_title_attribute(); ?>">

<?php the_title(); ?></a></h2>

<?php the_excerpt(); ?>

<?php echo $event_gorod; ?>

<a href="</php the_permalink(); ?>" title="< ?php the_title_attribute(); ?>"> Подробнее</a>

</div>

<?php endwhile; ?>

<?php else : ?>

<p>Извините, ничего не найдено</p>

<?php endif; ?>

<?php wp_reset_query(); ?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий