Вопрос: URL-адрес по умолчанию для выпадающего списка выбора

У меня есть раскрывающееся меню для моих категорий:

<form action="<?php bloginfo('url'); ?>" method="get" id="catform">    <?php        $parent = get_cat_ID("Pictures");        $select = wp_dropdown_categories("child_of=".$parent."&hide_empty=0&orderby=name&echo=0&show_option_none=Select...");        $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select);        echo $select;    ?></form>

Это автоматически переходит на соответствующую страницу категории, когда выбран вариант.

Это прекрасно работает, за исключением одной незначительной детализации ... опции по умолчанию.

У меня есть опция по умолчанию, которая называется Select ... , но что я не понял, так это когда вы выбираете эту опцию, что-то возвращается. На обычных страницах ничего не происходит, но это потому, что Select ... выбран по умолчанию. На странице категории ( category.php ), если вы выберете Выбрать ... , вы будете перенаправлены на: http://myurl.com/?cat=-1 .

Есть ли способ, когда кто-то выбирает Select .. . страница не отправляет форму?

Спасибо,
Джош

Ответы и комментарии:

После некоторого исследования я обнаружил, что option_none_value по умолчанию: -1, поэтому, поскольку я не объявил об этом, вот почему это работает ... Я все равно просто хотел бы, чтобы ничего не делать при выборе ... это возможно ?
Создан 10-08-2017 01:29 Josh Rodgers

Я нашел решение!
Когда я искал исправление, я наткнулся на эту статью: https://andrux.net/add-empty-option-to-wp_dropdown_categories/
Это очень близко к тому, что я искал, поэтому я подправил его.
Единственное, что я сделал с формой, это удалил show_option_none = Select ...
Код формы:

    <? PHP
        $ parent = get_cat_ID ("Pictures");
        $ select = wp_dropdown_categories ("child_of =". $ parent. "& hide_empty = 0 & orderby = name & echo = 0");
        $ select = preg_replace ("# ] *)> #", "", $ select);
        echo $ select;
    ?>
Форма>

Теперь это идет в functions.php:
function add_extra_blank_option ($ html) {
    $ needle = '    $ replace_with = ' Select ... option>
    / * заменить самый первый текст «    $ pos = strpos ($ html, $ needle);
    if ($ pos! == false) {
        $ html = substr_replace ($ html, $ replace_with, $ pos, strlen ($ needle));
    }

    вернуть $ html;
}
add_filter ('wp_dropdown_cats', 'add_extra_blank_option');

Это добавляет дополнительную пустую опцию, но я хотел, чтобы моя новая опция говорила «Выбрать ...», поэтому «Выбрать ...» был добавлен между тегами опции.
Я также хотел, чтобы моя новая опция отображалась по умолчанию, поэтому я добавил selected = "selected" в свой тег option.
Наконец, я хотел, чтобы опция была отключена, чтобы ее нельзя было выбрать, поэтому я добавил отключенную в свой тег опции.
Вот и все, вот и все :-)
Спасибо,
мистифицировать
Создан 10-08-2017 04:46 Josh Rodgers7221731