WP: Widget 年別アーカイブリストを表示する方法と和暦で表示する方法

Quick Edit Pencil
WordPressのサイドバーウィジェットのアーカイブを月別で表示する

JavaScriptで和暦も表示して、ドロップダウンに表示するアーカイブリストもフィルターする。フィルターはSQLで除外・含むタクソノミー、タームを指定できる。



PHP Code Widgetで追加したウィジェットに書く




年別アーカイブリを表示する




class WP_Widget_Archives を使う
<?php

// ウィジェットと同義の設定
$instance= array(
  //※'title'       => '',   // タイトル ※フックで指定する
  'dropdown'    => 1,    // ドロップダウン表示 
  'count'       => 1     // 投稿数を表示
);

// 必要があれば設定する
$args = array();

// フック
add_filter( 'widget_title', 'hook_widget_title' );    // タイトルをフック
add_filter( 'widget_archives_dropdown_args', 'hook_widget_archives_args' );    // ドロップダウンアーカイブタイプをフック
add_filter( 'widget_archives_args', 'hook_widget_archives_args' );    // リストアーカイブタイプをフック

// クラスを実体化する
$my_archives1 = new WP_Widget_Archives();
// メソッド(関数)を起動する
$my_archives1->widget( $args, $instance );

// フックを解除して他に影響を及ぼさない
remove_filter( 'widget_title', 'hook_widget_title' );
remove_filter( 'widget_archives_dropdown_args', 'hook_widget_archives_args' );
remove_filter( 'widget_archives_args', 'hook_widget_archives_args' );

// フック・カスタム関数
function hook_widget_title( $title ) {
    // タイトルを変更する
    $title = '';
    return $title;
}
function hook_widget_archives_args( $args ) {
    // デフォルトの月別(type=monthly)から年別のアーカイブに変更
    $args['type'] = 'yearly';
    return $args;
}

?>

リストの西暦を和暦に変換または和暦西暦の両方を表示する

JavaScriptをphp閉じタグの後に続ける
<script type='text/javascript'>
/* <![CDATA[ */
(function() {
    {
        // この関数の呼び出し位置を取得し
        var scpt,s;
        scpt = document.getElementsByTagName("script");
        scpt = scpt[scpt.length-1];
        s = scpt;
    }
    // scriptタグに隣接する前の要素を取得
 var dropdown = s.previousElementSibling;
    for( var i = 0; i < dropdown.length; i++ ){
        var t = dropdown.options[i].text;
        var matches = t.match(/\d{4}/);
        for(r in matches){
            if(r==0){
                var y = matches[r];
                //console.log(y);
                y = parseInt(y);
                if (isNaN(y)) { s = "数字を入力して下さい。"; }
                else if (y > 1988) { s = "平成"+(y-1988)+"年"; }
                else if (y > 1925) { s = "昭和"+(y-1925)+"年"; }
                else if (y > 1911) { s = "大正"+(y-1911)+"年"; }
                else if (y > 1867) { s = "明治"+(y-1867)+"年"; }
                else if (y > 1864) { s = "慶応"+(y-1864)+"年"; }
                else if (y > 1863) { s = "元治"+(y-1863)+"年"; }
                else if (y > 1860) { s = "文久"+(y-1860)+"年"; }
                else if (y > 1853) { s = "安政"+(y-1853)+"年"; }
                else if (y > 1847) { s = "嘉永"+(y-1847)+"年"; }
                else { s = "1848(嘉永元年)より大きい年数を指定下さい。"; }
                //console.log(s);
                dropdown.options[i].text = t.replace(/(\d{4})/, y+'年 / '+s);
                break;
            }
        };
    }
})();
/* ]]> */
</script>

月別アーカイブから特定のタクソノミーやタームを除外・含める

wp_get_archives のフィルターアクションを使う
// wp_get_archives
add_filter( 'getarchives_where', 'cat_limited_wp_get_archives' );
// wp_get_archives
remove_filter( 'getarchives_where', 'cat_limited_wp_get_archives' );
// wp_get_archives
function cat_limited_wp_get_archives( $where ) {
    echo $where;
    echo $dropdown_id;
 global $wpdb;
 $cat_string = '3,4,5';
 $where .= " AND $wpdb->posts.ID IN ( SELECT tr.object_id FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy = 'object' )";
 return $where;
}

参考リンク


【JavaScript】西暦を和暦に変換する - オープンリファレンス
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>サンプル</title>
<script language="JavaScript" type="text/javascript"><!--
window.onload = function(){
  document.getElementById("convert").onclick = function(){
    var y = document.getElementById("seireki").value;
    y = parseInt(y);
    if (isNaN(y)) { s = "数字を入力して下さい。"; }
    else if (y > 1988) { s = "平成"+(y-1988)+"年"; }
    else if (y > 1925) { s = "昭和"+(y-1925)+"年"; }
    else if (y > 1911) { s = "大正"+(y-1911)+"年"; }
    else if (y > 1867) { s = "明治"+(y-1867)+"年"; }
    else { s = "西暦は1868(明治元年)より大きい年数を指定下さい。"; }
    document.getElementById("wareki").value = s;
  }
}
--></script>
</head>
<body>
<h1>西暦を和暦に変換する</h1>
<form name="sampleForm" id="sampleForm" method="get" action="sample.cgi">
<div>西暦:<input type="text" id="seireki" name="seireki"></div>
<div>和暦:<input type="text" id="wareki" name="wareki"></div>
<div><input type="button" value="和暦へ変換" id="convert"></div>
</form>
</body>
</html>

wordpress 月別アーカイブから特定カテゴリーを除外する方法 | WEBデザイナーのしおり

SQL NOT IN を IN にすると含めるカテゴリとなる。
function cat_limited_wp_get_archives( $where ) {
 global $wpdb;
 $cat_string = '3,4,5'; 
 $where .= " AND $wpdb->posts.ID NOT IN ( SELECT tr.object_id FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy = 'category' AND tt.term_id IN ($cat_string) )";
 return $where;
}
add_filter( 'getarchives_where', 'cat_limited_wp_get_archives' );

WordPress 年別アーカイブリストを表示する方法 - by Takumi Hirashima

WordPressでフックを使ってウィジェットのアーカイブの出力をカスタマイズする – WebCake

PHPでのclassの使い方、宣言や呼び出しの基礎 | おすすめのプログラミングスクール比較!最短で上達するなら?

class内の関数をprivateにして呼び出したい | WordPress.org

疑似変数$thisで、メソッドから同じクラス内の別のメソッドを呼び出す - PHPリファレンス

WordPressで年別に分けて月のアーカイブリストを表示する方法 | webOpixel

【JavaScript入門】matchメソッドの使い方と正規表現の活用方法! | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
var mystr = "a1234b45c2d54321";
var result = mystr.match(/\d{2,4}/g);
 
for(r in result){
 console.log(result[r]);
};

和暦西暦変換表
和暦←→西暦 変換表
 和 暦 和 暦西暦弘道館
年齢
誠之館
年齢
-------元年始まり月日
天明6年-17861-43ひのえうまヘイ-
天明7年-17872-44ひのとひつじテイ-
天明8年-17883-45つちのえさるシン-
天明9年寛政1年17894-46つちのととりユウ-
-寛政2年17905-47かのえいぬコウジュツ-
-寛政3年17916-48かのとシンガイ-
-寛政4年17927-49みづのえジン-
-寛政5年17938-50みづのとうしチュウ-
-寛政6年17949-51きのえとらコウイン-
-寛政7年179510-52きのとオツボウ-
-寛政8年179611-53ひのえたつヘイシン-
-寛政9年179712-54ひのとテイ-
-寛政10年179813-55つちのえうま-
-寛政11年179914-56つちのとひつじ-
-寛政12年180015-57かのえさるコウシン-
享和1年寛政13年180116-58かのととりシンユウ1801/2/5
享和2年-180217-59みづのえいぬジンジュツ-
享和3年-180318-60みづのとガイ-
享和4年文化1年180419-1きのえコウ1804/2/11
-文化2年180520-2きのとうしオツチュウ-
-文化3年180621-3ひのえとらヘイイン-
-文化4年180722-4ひのとテイボウ-
-文化5年180823-5つちのえたつシン-
-文化6年180924-6つちのと-
-文化7年181025-7かのえうまコウ-
-文化8年181126-8かのとひつじシン-
-文化9年181227-9みづのえさるジンシン-
-文化10年181328-10みづのととりユウ-
-文化11年181429-11きのえいぬコウジュツ-
-文化12年181530-12きのとオツガイ-
-文化13年181631-13ひのえヘイ-
-文化14年181732-14ひのとうしテイチュウ-
文政1年文化15年181833-15つちのえとらイン1818/4/22
文政2年-181934-16つちのとボウ-
文政3年-182035-17かのえたつコウシン-
文政4年-182136-18かのとシン-
文政5年-182237-19みづのえうまジン-
文政6年-182338-20みづのとひつじ-
文政7年-182439-21きのえさるコウシン-
文政8年-182540-22きのととりオツユウ-
文政9年-182641-23ひのえいぬヘイジュツ-
文政10年-182742-24ひのとテイガイ-
文政11年-182843-25つちのえ-
文政12年-182944-26つちのとうしチュウ-
文政13年天保1年183045-27かのえとらコウイン1830/12/10
-天保2年183146-28かのとシンボウ-
-天保3年183247-29みづのえたつジンシン-
-天保4年183348-30みづのと-
-天保5年183449-31きのえうまコウ-
-天保6年183550-32きのとひつじオツ-
-天保7年183651-33ひのえさるヘイシン-
-天保8年183752-34ひのととりテイユウ-
-天保9年183853-35つちのえいぬジュツ-
-天保10年183954-36つちのとガイ-
-天保11年184055-37かのえコウ-
-天保12年184156-38かのとうしシンチュウ-
-天保13年184257-39みづのえとらジンイン-
-天保14年184358-40みづのとボウ-
弘化1年天保15年184459-41きのえたつコウシン1844/12/2
弘化2年-184560-42きのとオツ-
弘化3年-184661-43ひのえうまヘイ-
弘化4年-184762-44ひのとひつじテイ-
弘化5年嘉永1年184863-45つちのえさるシン1848/2/28
-嘉永2年184964-46つちのととりユウ-
-嘉永3年185065-47かのえいぬコウジュツ-
-嘉永4年185166-48かのとシンガイ-
-嘉永5年185267-49みづのえジン-
-嘉永6年185368-50みづのとうしチュウ-
安政1年嘉永7年185469-51きのえとらコウイン1854/11/27
安政2年-185570152きのとオツボウ-
安政3年-1856-253ひのえたつヘイシン-
安政4年-1857-354ひのとテイ-
安政5年-1858-455つちのえうま-
安政6年-1859-556つちのとひつじ-
安政7年万延1年1860-657かのえさるコウシン1860/3/18
文久1年万延2年1861-758かのととりシンユウ1861/2/19
文久2年-1862-859みづのえいぬジンジュツ-
文久3年-1863-960みづのとガイ-
文久4年元治1年1864-101きのえコウ1864/2/20
慶応1年元治2年1865-112きのとうしオツチュウ1865/4/7
慶応2年-1866-123ひのえとらヘイイン-
慶応3年-1867-134ひのとテイボウ-
慶応4年明治1年1868-145つちのえたつシン1868/9/8
-明治2年1869-156つちのと-
-明治3年1870-167かのえうまコウ-
-明治4年1871-178かのとひつじシン-
-明治5年1872-189みづのえさるジンシン-
-明治6年1873-1910みづのととりユウ-
-明治7年1874-2011きのえいぬコウジュツ-
-明治8年1875-2112きのとオツガイ-
-明治9年1876-2213ひのえヘイ-
-明治10年1877-2314ひのとうしテイチュウ-
-明治11年1878-2415つちのえとらイン-
-明治12年1879-2516つちのとボウ-
-明治13年1880-2617かのえたつコウシン-
-明治14年1881-2718かのとシン-
-明治15年1882-2819みづのえうまジン-
-明治16年1883-2920みづのとひつじ-
-明治17年1884-3021きのえさるコウシン-
-明治18年1885-3122きのととりオツユウ-
-明治19年1886-3223ひのえいぬヘイジュツ-
-明治20年1887-3324ひのとテイガイ-
-明治21年1888-3425つちのえ-
-明治22年1889-3526つちのとうしチュウ-
-明治23年1890-3627かのえとらコウイン-
-明治24年1891-3728かのとシンボウ-
-明治25年1892-3829みづのえたつジンシン-
-明治26年1893-3930みづのと-
-明治27年1894-4031きのえうまコウ-
-明治28年1895-4132きのとひつじオツ-
-明治29年1896-4233ひのえさるヘイシン-
-明治30年1897-4334ひのととりテイユウ-
-明治31年1898-4435つちのえいぬジュツ-
-明治32年1899-4536つちのとガイ-
-明治33年1900-4637かのえコウ-
-明治34年1901-4738かのとうしシンチュウ-
-明治35年1902-4839みづのえとらジンイン-
-明治36年1903-4940みづのとボウ-
-明治37年1904-5041きのえたつコウシン-
-明治38年1905-5142きのとオツ-
-明治39年1906-5243ひのえうまヘイ-
-明治40年1907-5344ひのとひつじテイ-
-明治41年1908-5445つちのえさるシン-
-明治42年1909-5546つちのととりユウ-
-明治43年1910-5647かのえいぬコウジュツ-
-明治44年1911-5748かのとシンガイ-
大正1年明治45年1912-5849みづのえジン1912/7/30
大正2年-1913-5950みづのとうしチュウ-
大正3年-1914-6051きのえとらコウイン-
大正4年-1915-6152きのとオツボウ-
大正5年-1916-6253ひのえたつヘイシン-
大正6年-1917-6354ひのとテイ-
大正7年-1918-6455つちのえうま-
大正8年-1919-6556つちのとひつじ-
大正9年-1920-6657かのえさるコウシン-
大正10年-1921-6758かのととりシンユウ-
大正11年-1922-6859みづのえいぬジンジュツ-
大正12年-1923-6960みづのとガイ-
大正13年-1924-701きのえコウ-
大正14年-1925-712きのとうしオツチュウ-
大正15年昭和1年1926-723ひのえとらヘイイン1926/12/25
-昭和2年1927-734ひのとテイボウ-
-昭和3年1928-745つちのえたつシン-
-昭和4年1929-756つちのと-
-昭和5年1930-767かのえうまコウ-
-昭和6年1931-778かのとひつじシン-
-昭和7年1932-789みづのえさるジンシン-
-昭和8年1933-7910みづのととりユウ-
-昭和9年1934-8011きのえいぬコウジュツ-
-昭和10年1935-8112きのとオツガイ-
-昭和11年1936-8213ひのえヘイ-
-昭和12年1937-8314ひのとうしテイチュウ-
-昭和13年1938-8415つちのえとらイン-
-昭和14年1939-8516つちのとボウ-
-昭和15年1940-8617かのえたつコウシン-
-昭和16年1941-8718かのとシン-
-昭和17年1942-8819みづのえうまジン-
-昭和18年1943-8920みづのとひつじ-
-昭和19年1944-9021きのえさるコウシン-
-昭和20年1945-9122きのととりオツユウ-
-昭和21年1946-9223ひのえいぬヘイジュツ-
-昭和22年1947-9324ひのとテイガイ-
-昭和23年1948-9425つちのえ-
-昭和24年1949-9526つちのとうしチュウ-
-昭和25年1950-9627かのえとらコウイン-
-昭和26年1951-9728かのとシンボウ-
-昭和27年1952-9829みづのえたつジンシン-
-昭和28年1953-9930みづのと-
-昭和29年1954-10031きのえうまコウ-
-昭和30年1955-10132きのとひつじオツ-
-昭和31年1956-10233ひのえさるヘイシン-
-昭和32年1957-10334ひのととりテイユウ-
-昭和33年1958-10435つちのえいぬジュツ-
-昭和34年1959-10536つちのとガイ-
-昭和35年1960-10637かのえコウ-
-昭和36年1961-10738かのとうしシンチュウ-
-昭和37年1962-10839みづのえとらジンイン-
-昭和38年1963-10940みづのとボウ-
-昭和39年1964-11041きのえたつコウシン-
-昭和40年1965-11142きのとオツ-
-昭和41年1966-11243ひのえうまヘイ-
-昭和42年1967-11344ひのとひつじテイ-
-昭和43年1968-11445つちのえさるシン-
-昭和44年1969-11546つちのととりユウ-
-昭和45年1970-11647かのえいぬコウジュツ-
-昭和46年1971-11748かのとシンガイ-
-昭和47年1972-11849みづのえジン-
-昭和48年1973-11950みづのとうしチュウ-
-昭和49年1974-12051きのえとらコウイン-
-昭和50年1975-12152きのとオツボウ-
-昭和51年1976-12253ひのえたつヘイシン-
-昭和52年1977-12354ひのとテイ-
-昭和53年1978-12455つちのえうま-
-昭和54年1979-12556つちのとひつじ-
-昭和55年1980-12657かのえさるコウシン-
-昭和56年1981-12758かのととりシンユウ-
-昭和57年1982-12859みづのえいぬジンジュツ-
-昭和58年1983-12960みづのとガイ-
-昭和59年1984-1301きのえコウ-
-昭和60年1985-1312きのとうしオツチュウ-
-昭和61年1986-1323ひのえとらヘイイン-
-昭和62年1987-1334ひのとテイボウ-
-昭和63年1988-1345つちのえたつシン-
平成1年昭和64年1989-1356つちのと1989/1/8
平成2年-1990-1367かのえうまコウ-
平成3年-1991-1378かのとひつじシン-
平成4年-1992-1389みづのえさるジンシン-
平成5年-1993-13910みづのととりユウ-
平成6年-1994-14011きのえいぬコウジュツ-
平成7年-1995-14112きのとオツガイ-
平成8年-1996-14213ひのえヘイ-
平成9年-1997-14314ひのとうしテイチュウ-
平成10年-1998-14415つちのえとらイン-
平成11年-1999-14516つちのとボウ-
平成12年-2000-14617かのえたつコウシン-
平成13年-2001-14718かのとシン-
平成14年-2002-14819みづのえうまジン-
平成15年-2003-14920みづのとひつじ-
平成16年-2004-15021きのえさるコウシン-
平成17年-2005-15122きのととりオツユウ-
平成18年-2006-15223ひのえいぬヘイジュツ-
平成19年-2007-15324ひのとテイガイ-
平成20年-2008-15425つちのえ-
平成21年-2009-15526つちのとうしチュウ-
平成22年-2010-15627かのえとらコウイン-
平成23年-2011-15728かのとシンボウ-
平成24年-2012-15829みづのえたつジンシン-
平成25年-2013-15930みづのと-
平成26年-2014-16031きのえうまコウ-
平成27年-2015-16132きのとひつじオツ-
平成28年-2016-16233ひのえさるヘイシン-
平成29年-2017-16334ひのととりテイユウ-
平成30年-2018-16435つちのえいぬジュツ-
平成31年-2019-16536つちのとガイ-
平成32年-2020-16637かのえコウ-
平成33年-2021-16738かのとうしシンチュウ-
平成34年-2022-16839みづのえとらジンイン-
平成35年-2023-16940みづのとボウ-
平成36年-2024-17041きのえたつコウシン-
平成37年-2025-17142きのとオツ-
平成38年-2026-17243ひのえうまヘイ-
平成39年-2027-17344ひのとひつじテイ-
平成40年-2028-17445つちのえさるシン-
平成41年-2029-17546つちのととりユウ-
平成42年-2030-17647かのえいぬコウジュツ-
平成43年-2031-17748かのとシンガイ-
平成44年-2032-17849みづのえジン-
平成45年-2033-17950みづのとうしチュウ-
平成46年-2034-18051きのえとらコウイン-
平成47年-2035-18152きのとオツボウ-
平成48年-2036-18253ひのえたつヘイシン-
平成49年-2037-18354ひのとテイ-
平成50年-2038-18455つちのえうま-
平成51年-2039-18556つちのとひつじ-
平成52年-2040-18657かのえさるコウシン-
平成53年-2041-18758かのととりシンユウ-
平成54年-2042-18859みづのえいぬジンジュツ-
平成55年-2043-18960みづのとガイ-

[JavaScript] ループ途中で抜ける処理は for(in break) ではなく some を使おう♪ - Qiita

最新コード実装20230222版

<?php
 
// ウィジェットと同義の設定
$instance= array(
  //※'title'       => '',   // タイトル ※フックで指定する
  'dropdown'    => 1,    // ドロップダウン表示 
  'count'       => 1     // 投稿数を表示
);
 
// 必要があれば設定する
$args = array();
 
// フック
add_filter( 'widget_title', 'hook_widget_title' );    // タイトルをフック
add_filter( 'widget_archives_dropdown_args', 'hook_widget_archives_args' );    // ドロップダウンアーカイブタイプをフック
add_filter( 'widget_archives_args', 'hook_widget_archives_args' );    // リストアーカイブタイプをフック
 
// クラスを実体化する
$my_archives1 = new WP_Widget_Archives();
// メソッド(関数)を起動する
$my_archives1->widget( $args, $instance );
 
// フックを解除して他に影響を及ぼさない
remove_filter( 'widget_title', 'hook_widget_title' );
remove_filter( 'widget_archives_dropdown_args', 'hook_widget_archives_args' );
remove_filter( 'widget_archives_args', 'hook_widget_archives_args' );
 
// フック・カスタム関数
function hook_widget_title( $title ) {
    // タイトルを変更する
    $title = '';
    return $title;
}
function hook_widget_archives_args( $args ) {
    // デフォルトの月別(type=monthly)から年別のアーカイブに変更
    $args['type'] = 'yearly';
    return $args;
}
 
?>

このブログの人気の投稿

書字方向 横書方向変換スクリプト 左書きから右書きへ(コピペ用途)

PowerShellのGetDetailsOf メソッドでプロパティの詳細情報のID番号と項目名を列挙します

PowerShellで複数ファイルのプロパティを取得する方法(準備編)

簡単 YouTube動画をダウンロード、音声のみ保存する方法 2019

DOMノードオブジェクトを文字列に変換する

AppleScript 改行 コード 置換

PowerShellでJPG画像のリサイズとウォーターマーク画像との合成を同時に行う

Blender: 辺の長さを数値で指定するアドオン