Blog変更中 カバな仕様...

PC[コンピュータ]

Blog全体を見直しています。
サイドバーに表示される月別アーカイブリストが、標準では月単位でだらだらと月毎に表示されているのが嫌で、色々と調べた結果、参考となるサイトも見つかったのだが、どうも元々のwordpressで用意されている関数仕様自体が変わっているようで、正しく動作させる為に、結局全てのコードを見直すハメに。

wp_get_archives

投函された記事の年月日の情報を得るのに wp_get_archives という関数を使うのですが、どうも期待した通りには動作しない。
—-
$monthly_archives = wp_get_archives(
$args = array(
‘type’ => ‘monthly’,
‘show_post_count’ => false,
‘before’ => ”,
‘after’ => ‘,’,
‘echo’ => 0,
));

—-

これで$monthly_archivesを表示させると以下のようになつていた(最初の部分のみ掲載)
—実動作—
<li><a href=’https://~/2019/06/’>2019年6月</a>,</li>
<li><a href=’https://~/2019/05/’>2019年5月</a>,</li>
<li><a href=’https://~/homewp/2019/04/’>2019年4月</a>,</li>
<li><a href=’https://~/homewp/2019/03/’>2019年3月</a>,</li>
<li><a href=’https://~/homewp/2019/02/’>2019年2月</a>,</li>
<li><a href=’https://~/homewp/2019/01/’>2019年1月</a>,</li>
<li><a href=’https://~/homewp/2018/12/’>2018年12月</a>,</li>
<li><a href=’https://~/homewp/2018/11/’>2018年11月</a>,</li>

—-

「~」部分は私のサイトのURLが設定されています。

これっておかしいですよね!
本来であれば、以下のような内容を期待していています。
私が参照したサイトも以下のような事を想定してプログラムが作成されている為、現状では正しく動作しないと思われます。

—期待する動作—
<li><a href=’https://~/2019/06/’>2019年6月</a></li>,
<li><a href=’https://~/2019/05/’>2019年5月</a></li>,
<li><a href=’https://~/homewp/2019/04/’>2019年4月</a></li>,
<li><a href=’https://~/homewp/2019/03/’>2019年3月</a></li>,
<li><a href=’https://~/homewp/2019/02/’>2019年2月</a></li>,
<li><a href=’https://~/homewp/2019/01/’>2019年1月</a></li>,
<li><a href=’https://~/homewp/2018/12/’>2018年12月</a></li>,
<li><a href=’https://~/homewp/2018/11/’>2018年11月</a></li>,

一つの「<li></li>,」の単位で出力されるべきが、「</li>」が翌月の頭に付いています。
これじゃ~ダメです。

修正内容

—-
$monthly_archives = wp_get_archives(
$args = array(
‘type’ => ‘monthly’,
format=’custom’,
‘show_post_count’ => false,
‘before’ => ”,
‘after’ => ‘,’,
‘echo’ => 0,
));

-動作結果—

<a href=’https://~/homewp/2019/06/’>2019年6月</a>,
<a href=’https://~/homewp/2019/05/’>2019年5月</a>,
<a href=’https://~/homewp/2019/04/’>2019年4月</a>,
<a href=’https://~/homewp/2019/03/’>2019年3月</a>,
<a href=’https://~/homewp/2019/02/’>2019年2月</a>,
<a href=’https://~/homewp/2019/01/’>2019年1月</a>,
<a href=’https://~/homewp/2018/12/’>2018年12月</a>,

<li>タグを出さないようにcustom設定にして、プログラムで前後に<li>タグを出すようにするようにしました。

更に 恐らくどこもやっていないような事を実装しました。
月別アーカイブの表示で、ある年を選択して、ある月の記事を表示させても、その月別が常に表示されているようにした。

var yearnum = $(“#ajax_ac_widget-2 .select_ca #my_year option:selected”).val();
$(“.archive-list .year:contains(“+yearnum+”)”).addClass(“acv_open”);

このコード記述を作るのに、半日かかってしまった。
jquery は昔自己勉強してきたが、実際に使ってなかったので、jqueryの復習から行って色々と調べまくりました。
私のような実装は恐らく、jqueryだけでは実装できません。PHPとの連携作業です。
後は 見栄えをちょこっと変更すれば終了

追記

確かにjqueryだけでは実装できませんが、admin-ajax.php なるものを利用すれば、実装できそうです。
というか、元々ajaxであれば、実現可能と思っていたのですが、たかが上記の為に、サーバサイドにphpプログラムを作ったり、その為のajax通信処理を作るのが大変な事がわかっていたので。
今回は、偶然にも、Calenderプラグイン自体が、admin-ajax.phpを内部的に利用して、サイトリロード時の、年と月情報を取得している物を、間接的に利用して実現した事になっています。