web-dev-qa-db-ja.com

Wp_is_post_revisionが常にfalseなのはなぜですか?

カスタム投稿タイプのリビジョンを保存しようとしています。これは私の投稿が親を持っているかどうかを確認する必要があります:

function save_revision( $post ) {

    if ( $post['submitted'] == true ) {
       $parent_id = wp_is_post_revision( $post['post_id'] );
       ...
    }
} add_action('init', 'save_revision');

問題は、そのpost_idに親の投稿があることがわかっていても、$ parent_idが常にfalseになることです。

どんな助けでも評価されます、私はこれを永久に働かせるようにしようとしていました。

1
TuninTuna

それは簡単です:$postがリビジョンではない場合、wp_is_post_revision()はfalseを返します。関数の名前を読むだけであなたに理由がわかります。 wp_is_post_revision()は、与えられた投稿がリビジョンである場合にのみ親投稿IDを返します(リビジョンは常に親投稿を持ちます)。 $postがリビジョンかどうかをチェックせずに、$postの親投稿IDを取得したいようです。

別の投稿の親投稿IDを取得するには、 wp_get_post_parent_id() を使用します。

function save_revision( $post ) {

    if ( $post['submitted'] == true ) {
       $parent_id = wp_get_post_parent_id( $post['post_id'] );
       ...
    }
}
add_action('init', 'save_revision');
1
cybmeta

私はこれが古いスレッドであることを知っています、しかし将来の参考のために - Wordpressの用語「改訂」は少し混乱しています。更新版や改訂版ではなく、古いバージョンです。最新版は「親」です。

したがって、現在のバージョンの投稿に対して関数wp_is_revision_post()を呼び出している場合、現在の投稿は「リビジョン」とは見なされないため、常にfalseが返されます(そしてwp_get_post_parent_id()NULLが返されます)。あなたは実際のリビジョンでそれを呼ぶ必要があるでしょう(それはポストの現在のバージョンと異なるIDを持つでしょう)。

0
Jillian Hoenig