web-dev-qa-db-fra.com

Pourquoi wp_is_post_revision est-il toujours faux?

J'essaie d'enregistrer une révision d'un type d'article personnalisé. Voici ce que je dois vérifier si le message a un parent:

function save_revision( $post ) {

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

Le problème est que je reçois toujours faux pour $ parent_id même si je sais qu’il existe un post parent pour ce post_id.

Toute aide est appréciée, j'essaie de faire en sorte que cela fonctionne pour toujours.

1
TuninTuna

C'est simple: si $post n'est pas une révision, wp_is_post_revision() renvoie false; il suffit de lire le nom de la fonction pour vous en donner la raison. wp_is_post_revision() renvoie l'ID de publication parent uniquement si la publication donnée est une révision (une révision a toujours une publication parent). Il semble que vous souhaitiez obtenir l'ID de poste parent de $post sans vérifier si $post est une révision.

Pour obtenir l'ID de publication parent d'une autre publication, utilisez 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

Je sais que c'est un vieux fil, mais pour référence future - le terme "révision" dans Wordpress est un peu déroutant. Ce n'est pas la mise à jour, ou révisée , post ... mais l'ancienne version. La version la plus mise à jour est le "parent".

Ainsi, si vous appelez la fonction wp_is_revision_post() sur la version actuelle du message, elle retournera toujours false (et wp_get_post_parent_id() renverra NULL) car le message actuel n'est pas considéré comme une "révision". Vous devrez l'appeler lors d'une révision réelle (qui aurait un identifiant différent de celui de la version actuelle du message).

0
Jillian Hoenig