WordPressで記事の投稿日時をカスタムフィールドや記事の内容を参照してスクリプトから変更したいと思いました。
wp cliを使えば、記事の投稿日時を自由に変更できることは知っていました。
wp post update – WP-CLI Command | Developer.WordPress.org
Updates one or more existing posts.
wp cliを使わずに、Wordpress上で処理したかったので、投稿日時を変更するWordpress関数を検索しましたが、なかなか情報が出てこない。
ということは、投稿日時を変更するにはDBを直接書き換えないと無理なの?と思い始めていたら、それらしい記事を見つけたのでメモしておきたいと思います。
更新日時を変更するカスタマイズは沢山ある
WordPressで記事の更新日時を変更する方法は、検索すると沢山見つかります。
しかし、記事の投稿日時をスクリプトで変更するカスタマイズについては出てきません。
wp_update_postを使えば投稿日時を変更できる
wp_update_post関数を使うと、投稿日時を変更できます。
$timeに好きな時間を入れて、IDを指定すれば投稿日時を変更できます。
wp_update_postのパラメータは、wp_insert_postと同じです。
<?php
wp_update_post(
array (
'ID' => 45, // ID of the post to update
'post_date' => $time,
'post_date_gmt' => get_gmt_from_date( $time )
)
);
}
wp_update_post() – Function | Developer.WordPress.org
Updates a post with new post data.
参考:https://njengah.com/wordpress-change-post-date-programmatically/
まとめ
投稿日時を自動的に一括でいじりたいというのは、特殊な用途の場合だけだと思います。
Googleは記事の投稿日時をある程度見ている感じもあり、記事の投稿日時でサイトの歴史を判断している可能性を考えると、記事を流し込むときには投稿日時をきちんと設定した方がよかろうと思います。