• 解決済 muro

    (@muromuro)


    記事を新規投稿するとき、投稿日を現在ではなく過去の日時に変更してから投稿しても、最終更新日が現在の日時になって投稿されてしまうのですが、これを投稿日と同じにすることはできないのでしょうか?
    たとえば、投稿日を2000/1/1にしても、投稿したあとに最終更新日が勝手に2025/10/3(今日)になってしまうということです。

    新規投稿時では最終更新日を入力することはできず、投稿後に最終更新日を変更することはできますが、一度は投稿しないといけないという手間があります。
    また、最終更新日の入力欄も、なぜか月が年の前に来ているので使いづらいです。

    add_filter('wp_insert_post_data', function($data, $postarr) {
    $data['post_modified'] = $data['post_date'];
    $data['post_modified_gmt'] = $data['post_date_gmt'];
    return $data;
    }, 10, 2);

    このようなコードをfunctions.phpに置いてみましたが、効いてくれませんでした。
    やはり新規投稿時に、日時を変えても最終更新日が現在になってしまいます。

    どうすれば今回の件に対処できるのでしょうか?
    なお、このような処理をしたい理由としましては、wordpressではない古いサイトから過去の記事を移植することになり、投稿日と最終更新日をそのまま移したいためです。
    最終更新日だけ現在になってしまうと、本来は更新されていない記事なのに、まるで更新があったように見えてしまいます。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • モデレーター Yukinobu Asakawa

    (@yukinobu)

    こんにちは。

    WordPress で記事を新規投稿する際、「投稿日」を過去の日付に設定しても、「最終更新日(post_modified)」が現在の日時になってしまう現象は、WordPressの標準仕様によるものです。
    投稿時に「投稿日(post_date)」は自由に変更できますが、「最終更新日(post_modified)」は投稿を保存したタイミングで自動的に現在時刻がセットされるためです。

    もし、サイト上に最終更新日が不要であれば、その部分をCSSで非表示にするという方法もあります。根本的な解決ではありませんが、質問でいただいている要望は叶うと思いますが、いかがですか?

    他にももっと良いアイディアやご助言があるかもしれません。

    モデレーター Setouchi Kotori

    (@setouchikotori)

    浅川さんの「その部分をCSSで非表示にするという方法」も案としてよいと思います☺️

    私からは、こちらのプラグインを。
    Change Last Modified Date

    Using this plugin you can easily change or prevent updating the last modified date for each post. Controlling the last modified date can come in handy when you would like to control “order by last modified” for posts (or custom post type).

    [ Google翻訳 ] このプラグインを使えば、各投稿の最終更新日を簡単に変更したり、更新されないようにしたりできます。最終更新日の制御は、投稿(またはカスタム投稿タイプ)の「最終更新日順」の表示を制御したい場合に便利です。

    未検証なので「おすすめ」とは申しませんが、ご要望は叶いそうです。

    himaartjp

    (@himaartwp)

    的外れだったらごめんなさいと前置きさせていただいた上で..。

    私の環境にて質問の中で提示されているコードを試したところ、新規作成時においても、既にある投稿の編集時においても、「下書き保存」「公開」「更新」いずれの場合でも最終更新日が公開日と同一になりましたので、コード自体はきちんと動作すると思います。

    質問文の中の以下の部分について気になったのですが、

    新規投稿時では最終更新日を入力することはできず、投稿後に最終更新日を変更することはできますが、一度は投稿しないといけないという手間があります。
    また、最終更新日の入力欄も、なぜか月が年の前に来ているので使いづらいです。

    少なくとも私の環境では最終更新日を編集する部分は、投稿エディター上にも、クイック編集上にも見当たりません。

    そこで「最終更新日の入力欄も、なぜか月が年の前に来ている」というのが気になって調べたところ、「WP Last Modified Info」というプラグインを使った場合の最終更新日の編集フォームではそのようになっているようです(その他のプラグインでもそうした形のものがあるかも知れません)。

    このことからの想像ではありますが、最終更新日を変更するようなプラグインを使われている、もしくは、そのような機能を持つテーマを使われているのではないでしょうか?

    もしもそれらが有効になっている場合には、処理の優先度から提示されているコードが効かない可能性があります。

    また、それらの機能を持つものについて、無効にしてみる、仕様の確認をする等をすることで解決するかも知れません。

    トピック投稿者 muro

    (@muromuro)

    皆様、ご返信ありがとうございます。

    いつの間にか「WP Last Modified Info」というプラグインがインストールされておりました。
    私以外も操作することがあるサイトなので、他の方が勝手に入れたのだと思われます。
    たしかによく考えると、wordpress標準で最終更新日を変更する機能なんてなかった気がします…。更新日のロックの部分もなぜか翻訳されていませんでしたが、これもよく考えたら標準にするにしてはおかしいところでしたね…。

    とにかく、原因がわかってよかったです。ありがとうございます。
    今回は旧サイトからの記事移植が優先なので、既存記事の最終更新日を変更することは後回しにして、プラグインはいったん止めておきます。

    モデレーター Yukinobu Asakawa

    (@yukinobu)

    ご報告ありがとうございます。
    解決できて良かったですね。

    ご助言くださった方々、ありがとうございました!

5件の返信を表示中 - 1 - 5件目 (全5件中)

このトピックに返信するにはログインが必要です。