Quand et où utiliser wp_insert_post ()

4

Je crée une fonction qui crée un groupe de pages avec un ID parent commun.

Si j'exécute deux fois wp_insert_post () sur un ID parent, la fonction crée-t-elle les pages deux fois tout en modifiant les slugs? Ou suis-je sûr de mettre cela dans mon functions.php comme ceci:

add_action('init', 'AddMyPages');
    
posée AlxVallejo 24.01.2012 - 21:46

1 réponse

7

Utilisez un type de balise conditionnelle pour vérifier si ces publications existent ou non. S'ils n'existent pas, faites-les créer avec wp_insert_post . Faites cette logique dans la fonction AddMyPages et non autour de la fonction add_action .

Exemple

Vous souhaitez ajouter une page avec un ID parent uniquement s'il n'existe pas et souhaitez que cette page existe toujours. Comme il est dans le crochet init , il vérifie toujours si cette page existe, il n'est donc pas recommandé de le faire de cette façon. Vous devriez réellement le faire lors de l'activation d'un plug-in (j'ai donc modifié ma réponse pour cette méthode).

register_activation_hook( __FILE__, 'AddThisPage' );

function AddThisPage() {
    global $wpdb; // Not sure if you need this, maybe

    $page = array(
        'post_title' => 'My post',
        'post_content' => 'This is my post.',
        'post_status' => 'publish',
        'post_author' => 1,
        'post_type' => 'page',
        'post_parent' => 3 // ID of the parent page
    );

    $page_exists = get_page_by_title( $page['post_title'] );

    if( $page_exists == null ) {
        // Page doesn't exist, so lets add it
        $insert = wp_insert_post( $page );
        if( $insert ) {
            // Page was inserted ($insert = new page's ID)
        }
    } else {
        // Page already exists
    }

}

Merci de @kaiser de me l'avoir rappelé, register_activation_hook ne fonctionne que dans des plugins , et non dans des thèmes.

En ce qui concerne un thème, eh bien, je ne connais pas de hook d'activation officiel, mais juste switch_theme , mais il est exécuté avant que le thème ne soit actif. J'ai trouvé une solution de contournement ici , mais il se peut que ce soit hors de date, pourrait être quelque chose d'utile à examiner.

Ressources utilisées

wp_insert_post , get_page_by_title , register_activation_hook

    
réponse donnée Jared 24.01.2012 - 21:54

Lire d'autres questions sur les étiquettes