更新日時の表示ロジック

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

    *KogaHiromichiではなく、代理で五十嵐がコメントしています。

    【お使いの Snow Monkey のバージョン】 13.2.1
    【お使いの Snow Monkey Blocks のバージョン】 11.0.2
    【お使いの Snow Monkey Editor のバージョン】 5.0.1
    【お使いのブラウザ】 Chrome
    【当該サイトのURL】 ローカル環境での確認

    ### 発生している問題
    投稿で表示してる更新日が、予約投稿を利用した場合、公開日時より「前」に記事の更新を行うと、更新日時にとして表示されてしまう。

    該当部分のコード。

    function snow_monkey_entry_meta_items_modified() {
    	if ( get_the_time( 'Ymd' ) === get_the_modified_time( 'Ymd' ) ) {
    		return;
    	}
    	?>
    	<li class="c-meta__item c-meta__item--modified">
    		<i class="fas fa-sync-alt" aria-hidden="true"></i>
    		<span class="screen-reader-text"><?php esc_html_e( 'Modified', 'snow-monkey' ); ?></span>
    		<time datetime="<?php the_modified_time( 'c' ); ?>"><?php the_modified_time( get_option( 'date_format' ) ); ?></time>
    	
    	<?php
    }
    add_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_modified', 20 );
    

    ### 試したこと
    if ( get_the_time( 'Ymd' ) === get_the_modified_time( 'Ymd' ) ) ではなくて if ( get_the_time( 'Ymd' ) < get_the_modified_time( 'Ymd' ) ) にするのはどうでしょ。

    Twenty Nineteen では get_the_time( 'U' ) !== get_the_modified_time( 'U' ) となってるので、必ずしも公開日時<更新日時ではなく「一致していない場合」としてるのだと思いますが、公開日時より古い日時が更新日時として表示されることに違和感がありました。
    実装しないよということであればそれでも良いです。

    1
    いいねをした人: 居ません
    #72194
    キタジマ タカシ
    参加者
    2252

    あーなるほど! 予約投稿は考慮していませんでした。提案いただいたコードに変更しようと思います!

    1
    いいねをした人: 居ません
    #72238
    KogaHiromichi
    参加者
    8

    *代筆五十嵐

    @キタジマさん

    ありがとうございます。
    対応お待ちしております。

    ※余談ですが
    公開日時と更新日時を比較して一致していないという条件で
    予約投稿のケースで公開日時より古い日時が更新日時として表示されるケースを探してみたところ、某SEOプラグインでも報告がありました(バグという扱いになってるが対応された形跡がない)。
    あまり気にしないのですかね。。。

    0
    いいねをした人: 居ません
    #72995
    キタジマ タカシ
    参加者
    2252

    v14.0.3 で変更を入れました!

    1
    いいねをした人: 居ません
    #73149
    KogaHiromichi
    参加者
    8

    *代筆五十嵐

    @キタジマさん
    v14.0.4で確認しました。
    コードも見たのですが、下記の部分

    	if ( get_the_time( 'Ymd' ) < get_the_modified_time( 'Ymd' ) ) {
    		return;
    	}
    

    これだと公開日より更新日が新しい場合は処理しないでreturnしてるので、逆じゃないかと

    	if ( get_the_time( 'Ymd' ) > get_the_modified_time( 'Ymd' ) ) {
    		return;
    	}
    
    0
    いいねをした人: 居ません
    #73150
    キタジマ タカシ
    参加者
    2252

    更新日のほうが小さい(古い)場合は表示しない…だから確かに逆ですね、失礼しました!

    0
    いいねをした人: 居ません
    #73203
    キタジマ タカシ
    参加者
    2252

    v14.0.5 で修正しました!

    0
    いいねをした人: 居ません
    #73291
    KogaHiromichi
    参加者
    8

    *代筆五十嵐

    @キタジマさん
    v14.0.5で確認しました。
    概ねOKかと。

    ※欲を言えば、予約公開日と更新日が同じ場合(例えばAMに記事作成して午後に公開)の場合も更新日が出てしまうので、日付までしか比較しないのであれば、以下のようになるかと。こっちは参考程度にとどめてください。

    if ( get_the_time( 'Ymd' ) >= get_the_modified_time( 'Ymd' ) ) {
    		return;
    	}
    

    秒含めて厳密に比較するためにUnix Epoch使うパターン

    if ( get_the_time( 'U' ) > get_the_modified_time( 'U' ) ) {
    		return;
    	}
    
    2
    いいねをした人: 居ません
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • トピック「更新日時の表示ロジック」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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