get_lastpostmodifiedでカスタム投稿タイプの最終更新日時を取得するときの返値
-
get_lastpostmodifiedについて使い方が間違っているのか、確信がないためご存じの方が居たら教えてください。
自分がしたかったのはあるカスタム投稿タイプの最終更新日時を取得したいということでした(例:post_type=news)。それをするためにget_lastpostmodified(‘blog’,’news’)のようにしてみたのですが、実際の最終更新日時とは異なる値が返ってきてしまいました。
codexでは引数が1つしかないように見えるのでもしかして「自分の使い方が間違っている?」という可能性もあるのですが。
上記関数の該当のコード wp-includes/post.php を見ると引数は2つあり、2つめの引数にpost_typeが指定できるように思われます。
そのため、2つめの引数にpost_typeを指定すれば、そのカスタム投稿タイプの「最終更新日時 post_modified」が取得できると思って利用してみたのですが、予測した値と違うものが返されました。
コード上でデバッグログを取って調べたところ、
$lastpostmodified = _get_last_post_time( $timezone, ‘modified’, $post_type );
ここでは、post_type別の「最終更新日時 post_modified」が取得できるのですが、その下にある
$lastpostdate = get_lastpostdate( $timezone );
if ( $lastpostdate > $lastpostmodified ) {
$lastpostmodified = $lastpostdate;
}この部分で、$lastpostmodified に get_lastpostdate( $timezone ); の値が上書きされていて、最終的にこの値が返されているようでした。
この部分のコードの意図が少しわからなかったのですが、更新日時よりも公開日時(post_date)の方が大きいとき(予約投稿の場合など)に公開日時(post_date)を「最終更新日時」とする、というロジックかと思います。post_type内での公開日時(post_date)が返ってくるということであれば、そちらでも運用上は良いかと思います。
※ 本題とはずれますがget_lastpostdateという関数があるので、可能であればget_lastpostmodifiedは最終更新日時 post_modifiedのみが返った方が使い勝手的にはいいのかもしかしこのget_lastpostdateに第2引数が指定されていないため、’any’状態で最終投稿日時が取得されるため、あるpost_typeの最新投稿日時でも最新更新日時でもない値が返ってくるのではないかと思いました。
実際には自分でコードを書いて取得は出来るのですが、関数で取得できるとありがたいのでこの関数の意図などわかったらと思いました。
そもそも自分がなにか勘違いしている可能性も考えて(関数の意図を理解していない可能性?)このフォーラムに書いてみた次第です。ご意見いただけますとうれしいです。よろしくお願いします。
- トピック「get_lastpostmodifiedでカスタム投稿タイプの最終更新日時を取得するときの返値」には新たに返信することはできません。