0

私のワードプレスのテーマでこのコードを使用する:

<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

しかし、7 月のオプションはドロップダウンで選択されていません。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 に答える