[ 解決済 ] 投稿ページのパンくずリスト表示について

VWSとは フォーラム Lightning [ 解決済 ] 投稿ページのパンくずリスト表示について

[ 解決済 ] 投稿ページのパンくずリスト表示について

7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #121095

    pepepe
    参加者

    ■ WordPress のバージョン
    WordPress 6.9.4

    ■ テーマ・プラグインは全て最新版で確認してください。
    確認しました。

    ■ テーマの種類
    Lightning ( G2 )

    ■ テーマのバージョン
    8.27.0

    ■ スキンの種類
    Origin II

    ■ 期待する動作
    予約投稿での記事をリライトをしない場合に、最終更新日(予約をした日)の表示をなし・もしくは投稿日にしたい

    ■ 自分で試した事
    パンくずリストのありなしの設定を変えたが、パンくずリストは残しておきたい

    ■ 症状が発生するブラウザ
    クローム

    ■ 実際の症状
    投稿ページの、上部パンくずリストが

    2026年5月1日 / 最終更新日 : 2026年4月28日

    と表示され、最終更新日の方が古い日付になる事象が起こってしまいます。

    おそらく
    予約設定日→4月28日
    投稿日→5月1日
    リライトなし
    で作成したためだと思うのですが、
    予約投稿後、リライトをしない場合に最終更新日の表示をなし・もしくは投稿日にすることは可能でしょうか?

    ご教授いただきたいです。よろしくお願いいたします。

    Attachments:
    You must be logged in to view attached files.

    該当URL : https://*********

    ※該当URLはフォーラムライセンスが有効のユーザーにのみ表示されます

    #121106

    石川@Vektor,Inc.
    キーマスター

    外観 > カスタマイズ > 追加CSSから

    .siteContent .entry-meta_updated {
    	display:none;
    }

    あたりでできるかと思います。

    よろしくお願いいたします。

    #121118

    pepepe
    参加者

    早速のご回答ありがとうございます。
    いただいたCSSで予約投稿日が消えましたが、他ページのリライトした最終更新日の表示も消えてしまったようです。

    通常の最終更新日は残しつつ、予約投稿日の時系列がずれているものだけを非表示にすることは難しいでしょうか。

    #121123

    石川@Vektor,Inc.
    キーマスター

    さっきのCSSを消して、子テーマの functions.php などに以下でいけると思います

    
    /**
     * 公開日と更新日のうち、新しい方のタイムスタンプを返す
     *
     * 予約投稿などで post_date の方が post_modified より新しい場合は、
     * 公開日を「最終更新日」として扱う。
     */
    function my_get_latest_post_date_timestamp( $post = null ) {
    	$post = get_post( $post );
    
    	if ( ! $post ) {
    		return null;
    	}
    
    	$published_timestamp = get_post_time( 'U', false, $post );
    	$modified_timestamp  = get_post_modified_time( 'U', false, $post );
    
    	return max(
    		(int) $published_timestamp,
    		(int) $modified_timestamp
    	);
    }
    
    /**
     * get_the_modified_date() の表示を差し替える
     */
    add_filter(
    	'get_the_modified_date',
    	function ( $the_date, $format, $post ) {
    		$timestamp = my_get_latest_post_date_timestamp( $post );
    
    		if ( ! $timestamp ) {
    			return $the_date;
    		}
    
    		if ( empty( $format ) ) {
    			$format = get_option( 'date_format' );
    		}
    
    		return wp_date( $format, $timestamp );
    	},
    	10,
    	3
    );
    
    /**
     * get_the_modified_time() の表示を差し替える
     */
    add_filter(
    	'get_the_modified_time',
    	function ( $the_time, $format, $post ) {
    		$timestamp = my_get_latest_post_date_timestamp( $post );
    
    		if ( ! $timestamp ) {
    			return $the_time;
    		}
    
    		if ( empty( $format ) ) {
    			$format = get_option( 'time_format' );
    		}
    
    		return wp_date( $format, $timestamp );
    	},
    	10,
    	3
    );
    
    #121124

    石川@Vektor,Inc.
    キーマスター

    表示は日付だけだったので get_the_modified_time() の方は無しでも問題なかったです。

    #121137

    pepepe
    参加者

    ありがとうございます。 functions.php をあまり触ったことがないので、すこし調べてみます。
    難しいようであれば、最初に入れていただいた最終更新日を全非表示にて進めていこうと思います。

    ありがとうございます。

    #121138

    解決済になった後ですが、横から失礼します。

    こんなやり方、いかがでしょうか?

    function my_wp_insert_post_data( $data ) {
      // 予約投稿のとき時だけ処理
      if ( $data['post_status'] == 'future' ) {
        // 最終更新日を公開日と同じにする
        $data['post_modified'] = $data['post_date'];
        $data['post_modified_gmt'] = $data['post_date_gmt'];
      }
      return $data;
    }
    add_filter( 'wp_insert_post_data', 'my_wp_insert_post_data' );

    上記のコードは予約投稿時に最終更新日を公開を指定した日と同じ日時に書き換えます。

    予約投稿作業をいつ行ったのかがわからくなりますが、それが気にならないならお試しください。

7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • このトピックに返信するにはログインが必要です。