类别的默认URL下拉选择选项

时间:2017-08-10 作者:Josh Rodgers

我的类别有一个下拉菜单:

<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), 如果您选择Select... 您将被重定向到:http://myurl.com/?cat=-1.

如果有人选择Select... 页面未提交表单?

谢谢你,乔希

1 个回复
最合适的回答,由SO网友:Josh Rodgers 整理而成

我找到了解决办法!

在寻找修复方法时,我偶然看到了这篇文章:https://andrux.net/add-empty-option-to-wp_dropdown_categories/

这与我想要的非常接近,所以我对它进行了调整。

我对表单所做的唯一一件事就是删除show_option_none=Select...

表单代码:

<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");
        $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange=\'return this.form.submit()\'>", $select);
        echo $select;
    ?>
</form>
现在,这个进入functions.php:

function add_extra_blank_option( $html ) {
    $needle = \'<option\';
    $replace_with = \'<option value="" selected="selected" disabled>Select...</option><option\';

    /* replace the very first \'<option\' text with the blank option tag */
    $pos = strpos( $html, $needle );
    if ( $pos !== false ) {
        $html = substr_replace( $html, $replace_with, $pos, strlen( $needle ) );
    }

    return $html;
}
add_filter( \'wp_dropdown_cats\', \'add_extra_blank_option\' );
这增加了一个额外的空白选项,但我希望我的新选项显示“选择…”,所以“选择…”已添加到option 标签。

我还想默认显示我的新选项,所以我添加了selected="selected" 给我的option 标签

最后,我希望禁用该选项,以便无法选择该选项,因此我添加了disabled 给我的option 标签

就这样,就这样:-)

谢谢,乔希

结束

相关推荐

REDIRECT_TO不包括来自URL的哈希标签

当未登录的用户试图转到需要登录的论坛主题时,我会尝试在他们登录后将他们重定向到该主题。但我似乎无法让锚/标签保留在URL中,以便用户直接访问最新的评论。尽管我在下面进行了尝试,WordPress“redirect\\u to”参数中的标签仍然是实际的标签,而不是“%23”。如果在浏览器中的“redirect\\u to”参数中键入“%23”,则用户将直接转到适用的锚。add_action( \'template_redirect\', \'redirect_to_topic_after_login\');