アーカイブやサイドバーなどの日付に曜日を追加したい

0
いいねをした人: 居ません
  • このトピックには9件の返信、3人の参加者があり、最後に林淳一により3年、 2ヶ月前に更新されました。
10件の投稿を表示中 - 1 - 10件目 (全10件中)
  • 投稿者
    投稿
  • #87118
    林淳一
    参加者
    20

    【お使いの Snow Monkey のバージョン】15.7.0
    【お使いの Snow Monkey Blocks のバージョン】12.3.1
    【お使いの Snow Monkey Editor のバージョン】6.0.1
    【お使いのブラウザ】Firefox 92.0
    【当該サイトのURL】http://gsr-jp.com/seminer-event/

    ### 実現したいこと

    投稿日に曜日を追加したい。

    ### 発生している問題

     

    ### 試したこと

    My Snow Monkeyに以下のコードを追加しましたが、エラーになりました。

    add_filter(
    'snow_monkey_template_part_render',
    function( $html, $slug ) {
    if ( 'template-parts/loop/entry-summary/meta/meta' === $slug ) {
    return preg_replace(
    '<time datetime="<?php the_time( 'c' ); ?>"><!--?php the_time( get_option( 'date_format' ) ); ?--></time>',
    '<time datetime="<?php the_time( 'c(D)' ); ?>"><!--?php the_time( get_option( 'date_format' ) ); ?--></time>',
    $html
    );
    }
    return $html;
    },
    10,
    2
    );
    0
    いいねをした人: 居ません
    #87119
    アバター画像キタジマ タカシ
    参加者
    2421

    具体的にどのようなエラーが出たのか教えてください!

    1
    いいねをした人:
    #87125
    まーちゅう
    参加者
    367

    6行目と7行目にHTMLのコメントアウトが混ざっちゃってますね。

    1
    いいねをした人:
    #87129
    林淳一
    参加者
    20

    キタジマ様

    エラーは以下となります。

    0
    いいねをした人: 居ません
    #87131
    林淳一
    参加者
    20

    以下を参考にしました。

    add_filter(
    	'snow_monkey_template_part_render',
    	function( $html, $slug ) {
    		if ( 'template-parts/loop/entry-summary/meta/meta' === $slug ) {
    			return preg_replace(
    '|
    <ul>
     	<li class="c-meta__item c-meta__item--published">.*?</li>
    </ul>
    |ms',
    '
    <ul>
     	<li class="c-meta__item c-meta__item--modified">' . get_the_modified_time( get_option( 'date_format' ) ) . '</li>
    </ul>
    ',
    				$html
    			);
    		}
    		return $html;
    	},
    	10,
    	2
    );
    0
    いいねをした人: 居ません
    #87196
    アバター画像キタジマ タカシ
    参加者
    2421

    508行目、509行目に PHP の構文の誤りがあります。

    どちらの行もシングルクオーテーションで文字列として扱おうとしているのに、そのなかに <?php があったり、the_time のような文字列を返さず画面出力する関数を使っているためにごちゃっとして結果的に構文エラーでコケているように見えます。

    '<time datetime="' . get_the_time( 'c' ) . '">' . get_the_time( get_option( 'date_format' ) ) . '</time>',
    

    のような形に書き直してみるとどうですか?

    1
    いいねをした人:
    #87197
    アバター画像キタジマ タカシ
    参加者
    2421

    また、ここは

    add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
    

    というコードで日付を表示する処理を追加しているので、snow_monkey_template_part_render フィルターフックでの書き換えが難しいのであれば

    remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
    

    でデフォルトの日付表示処理を外して、改めてオリジナルの日付表示処理を追加するほうがわかりやすいかもしれませんね。

    —-

    追記:すみません、↑は誤りです。↑は詳細ページのメタ情報をについてでした。今回は一覧部分の日付なので違いますね。

    一覧部分の日付(というかメタ情報)は、template-parts/loop/entry-summary/meta/meta.php というファイルで表示されています。この部分は子テーマに template-parts/loop/entry-summary/meta/meta-{投稿タイプ名}.php というファイルがあるとそれが優先されて使われるようになっているので、子テーマにそのファイルをつくって独自に日付の表示処理を書いてしまったほうがわかりやすいかもしれませんね。

    1
    いいねをした人:
    #87209
    林淳一
    参加者
    20

    キタジマ様

      https://snow-monkey.2inc.org/forums/topic/%e3%82%a2%e3%83%bc%e3%82%ab%e3%82%a4%e3%83%96%e3%82%84%e3%82%b5%e3%82%a4%e3%83%89%e3%83%90%e3%83%bc%e3%81%aa%e3%81%a9%e3%81%ae%e6%97%a5%e4%bb%98%e3%81%ab%e6%9b%9c%e6%97%a5%e3%82%92%e8%bf%bd%e5%8a%a0/#post-87196

    以下にしてみましたが、日付が表示されなくなりました。

    
    
    '<time datetime="' . get_the_time( 'c' ) . '">' . get_the_time( get_option( 'date_format' ) ) . '</time>',
    '<time datetime="' . get_the_time( 'c(D)' ) . '">' . get_the_time( get_option( 'date_format' ) ) . '</time>',
    
    
    0
    いいねをした人: 居ません
    #87211
    アバター画像キタジマ タカシ
    参加者
    2421

    んー preg_replace 使ってるからですかね。ここは str_replace が正しいと思います(単純な文字列置換なので)。

    あと気になるのは <time datetime=〜 という文字列で置換をおこなっていることです。一覧の日付部分は time タグは使っていなかったのではないかと思うのですが、なにか独自にカスタマイズされてたりしますかね? 特に無いのであれば、置換する文字列を書き換えるか、前述したように子テーマでテンプレートを追加するのが良いと思います。

    return preg_replace(
    	'|(<li class="c-meta__item c-meta__item--published">)(.*?)(</li>)|ms',
    	'$1' . get_the_time( 'Y年n月j日(D)' ) . '$3',
    	$html
    );

    それか、この部分は get_option( 'date_format' ) を使っているので、ダッシュボード → 一般設定 → 日付形式 で指定したフォーマットが使用されます。なので日付形式のところで (D) を追加しちゃうのが一番簡単かもしれません。コードの追加自体がいらなくなるので。ただしここ以外の部分でも get_option( 'date_format' ) を使っている部分に曜日がでるようになっちゃうのでご注意ください。

    1
    いいねをした人:
    #87222
    林淳一
    参加者
    20

    キタジマ様

    子テーマはあまり使いたくなく、プラグインの方で解決しようかと試みましたが、自分のレベルと時間との兼ね合いもあり、一般設定の方で対処しました。
    お時間取っていただき、ありがとうございました。

    1
    いいねをした人:
10件の投稿を表示中 - 1 - 10件目 (全10件中)
  • トピック「アーカイブやサイドバーなどの日付に曜日を追加したい」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。