前提・実現したいこと
wordpressにてターム別月別アーカイブを作成しました。
表示されるURLの値によってセレクトボックスの初期値を動的に変化させたいです。
セレクトボックス(日付)↓
<select id="date_link" onchange="location.href=value;"> <option>月を選択</option> <option value="://example/news/date/2021/6"> 2021.6 </option> <option value="://example/news/date/2021/5"> 2021.5 </option> <option value="://example/news/date/2021/4"> 2021.4 </option> <option value="://example/news/date/2021/2"> 2021.2 </option> <option value="://example/news/date/2020/12"> 2020.12 </option> </select>
javascript
1<script> 2 window.addEventListener('pageshow', () => { 3 4 document.querySelectorAll('#date_link option').forEach(x => { 5 var a = Object.assign(document.createElement('a'), { 6 href: x.value 7 }); 8 if (location.href == a.href) { 9 x.selected = true; 10 }; 11 }); 12 }); 13</script>
試したこと
上記コードにより、URLとセレクトボックスのvalueが完全一致する場合には初期値が変更される様になりました。
(://example/news/date/2021/6のURLの時には2021.6が選択されている)
しかし、URLにパラメーターを振った場合には初期値は変更されず「<option>月を選択</option>」が選択されたままになっています。
例)「://example/news/date/2020/12/?news_category=news」
※タクソノミー(news_category)のターム(news)で記事を絞っています。
この場合には、valueと一致しないので、初期値は変更されません。
(本来は2020.12が初期値で選択される様にしたいです。)
完全一致ではなく、一部含まれている場合にはどの様にすれば良いでしょうか?
javascript部分でlocation.hrefをlocation.pathnameへ変更してみたのですが、それも上手く動かず、
ご存知の方がいらっしゃいましたらご教授いただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー