web-dev-qa-db-fra.com

Comment obtenir un post-ID dans le hook d'action post_updated?

Je veux exécuter une fonction, myfunction () [nom hypothétiquement], chaque fois qu'une page est mise à jour dans l'administrateur. La fonction ne modifie en rien le contenu enregistré. Elle exécute simplement une tâche non liée ailleurs.

J'ai lu que le hook post_updated est bon à utiliser pour cela, mais je n'arrive pas à obtenir que ce code soit exécuté:

add_action('post_updated', 'myfunction');

function myfunction() {
    // check if this is a page
    $id = get_the_id();
    if ( is_page($id) ) {
        // do stuff here
    }
}

Je suis sûr qu'il me manque quelque chose d'évident; dois-je passer/retourner des paramètres ($ post_ID, $ post_after, $ post_before, d'après ce que je récupère dans base de données Wordpress Hooks ) pour que cela fonctionne? Si je ne veux que l'ID, dois-je quand même rendre/retourner les deux autres?

2
supertrue

Vous devriez pouvoir obtenir l'ID de la publication via la variable $_POST.

EDIT:Peut-être que vous devriez essayer ceci avec l'action save_post, comme si, mais save_post fonctionnait parfois sur d'autres instances (c'est-à-dire. Brouillons enregistrés automatiquement). Vous souhaiterez donc effectuer d'autres vérifications. save_post renverra également l'ID en tant que l'un des arguments de la fonction afin que vous l'ayez déjà à portée de main.

add_action('save_post', 'myfunction');

function myfunction( $id ) {

    // verify if this is an auto save routine. 
    // If it is our form has not been submitted, so we dont want to do anything
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
        return;

    // check if this is a page
    if ( 'page' == $_POST['post_type'] ) {

        // Return nothing if the user can't edit this page
        if ( !current_user_can( 'edit_page', $id ) )
            return;

        // do stuff here, we have verified this is a page and you can edit it

    }

}

Vient de tester cela sur localhost, fonctionne bien pour moi.

Utilisé un peu de code à partir d'ici et vous devriez lire l'action save_post si vous décidez de l'essayer!

2
Jared

get_the_ID () devrait fonctionner, je l'utilise dans un but très similaire.

Les crochets que je l'utilise sont

add_action('future_to_publish','123_total_calculator');
add_action('new_to_publish','123_total_calculator');
add_action('draft_to_publish','123_total_calculator');
add_action('publish_post','123_total_calculator');
1
Satish Gandham