Cuándo y dónde usar wp_insert_post ()

4

Estoy creando una función que crea un grupo de páginas con una ID de padre común.

Si ejecuto wp_insert_post () en una ID de padre dos veces, ¿la función crea las páginas dos veces y altera las babosas? O estoy seguro de poner esto en mi functions.php así:

add_action('init', 'AddMyPages');
    
pregunta AlxVallejo 24.01.2012 - 21:46

1 respuesta

7

Use algún tipo de etiqueta condicional para verificar si esas publicaciones existen o no. Si no existen, haga que se creen con wp_insert_post . Haga esta lógica dentro de la función AddMyPages y no alrededor de la función add_action .

Ejemplo

Desea agregar una página con una identificación principal solo si no existe, y desea que esta página siempre exista. Ya que está en el gancho init , siempre verificará si esa página existe, por lo que no se recomienda hacerlo de esta manera. En realidad, debes hacer esto al activar de un complemento (por lo que he editado mi respuesta para ese método).

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
    }

}

Gracias a @kaiser por recordarme, register_activation_hook solo se ejecuta en complementos , no en temas.

En cuanto a un tema, bueno, no conozco un gancho de activación oficial, solo switch_theme , pero eso se ejecuta antes de que el tema esté activo. Encontré una solución aquí pero puede estar fuera de fecha, podría ser algo útil para examinar.

Recursos utilizados

wp_insert_post , get_pageby.org , register_activation_hook

    
respondido por el Jared 24.01.2012 - 21:54

Lea otras preguntas en las etiquetas