0

在我的 wordpress 主题中使用这段代码:

<select name="archive-dropdown" onChange="document.location.href=this.options[this.selectedIndex].value;">
<option value="">Select month</option>
<?php wp_get_archives('type=monthly&format=option'); ?>
</select> 

取自这里:http ://codex.wordpress.org/Function_Reference/wp_get_archives

这是输出的代码

<select name="archive-dropdown" onChange="document.location.href=this.options[this.selectedIndex].value;">
<option value="">Select month</option>
<option value='http://www.domain.com/?m=201307'> July 2013 </option>
<option value='http://www.domain.com/?m=201306'> June 2013 </option>
<option value='http://www.domain.com/?m=201305'> May 2013 </option>
</select>

例如,如果我选择 7 月,则会出现 7 月存档页面,并且我检查了该页面的地址是否正确:http ://www.domain.com/?m=201307

但是下拉菜单中没有选择七月选项。我知道 onChange 字段中的 javascript 位是将文档 href 与选项进行比较,然后选择匹配的选项值,但它似乎不起作用。

有什么帮助吗?

4

1 回答 1

4

想办法在我的 WordPress 主题功能中创建自定义过滤器。把它放在我的主题中functions.php

function get_archives_link_mod ( $link_html ) {
    preg_match ("/value='(.+?)'/", $link_html, $url);
    $requested = "http://{$_SERVER['SERVER_NAME']}{$_SERVER['REQUEST_URI']}";
    if ($requested == $url[1]) {
        $link_html = str_replace("<option", "<option selected='selected'", $link_html);
    }
    return $link_html;
}

然后把它放在我的主题中archive.php

<form action="" method="get">
    <select name="archive-dropdown" onChange="document.location.href=this.options[this.selectedIndex].value;">
    <option value="">PICK MONTH</option>
        <?php add_filter("get_archives_link", "get_archives_link_mod"); ?>
        <?php wp_get_archives('type=monthly&format=option'); ?>
    </select> 
</form>

我基本上采用了此处建议的代码来突出显示默认列表版本中的当前链接,wp_get_archives()并针对函数的选项格式对其进行了修改。作为一个非编码员,花了一点时间挖掘,把它贴在这里可能就像一棵树倒下,周围没有人听到它一样重要,但我只是拍拍自己的后背,假装是别人的手在这个悲伤而荒凉的世界。

于 2013-07-28T08:33:42.420 回答