insertar programáticamente una publicación secundaria en WordPress

3 minutos de lectura

avatar de usuario
jprusakova

Necesito crear mediante programación una publicación (o página) para cada publicación de WordPress creada o actualizada por un usuario a través del tablero. Agregué un gancho

add_action( 'publish_post', 'create_details_page');

Una publicación automática se crea solo si el usuario crea o actualiza una publicación en una categoría determinada, y la publicación automática se crea en una categoría diferente. Cada publicación pertenece a una sola categoría. Crea la publicación de la siguiente manera:

        $auto_post = array(
                'comment_status' => 'closed',
                'post_category' => array($category->term_id),
                'post_author' => $latest_post[0]->post_author,
                'post_type' => 'post',
                'post_title' => 'Details for ' . $latest_post[0]->post_title,
                'post_parent' => $latest_post[0]->ID,
                'post_content' => 'Post content'
        );
        $auto_post_id = wp_insert_post ( $auto_post, true );
        $details = get_post( $auto_post_id );
        wp_publish_post( $auto_post_id );

Los resultados son inconsistentes: a veces obtengo una publicación automática creada, a veces dos y ocasionalmente ninguna. ¿Por qué y cómo insertar la publicación exactamente una vez?

Para recuperar la publicación automática como secundaria de la publicación creada por el usuario:

$args = array(
        'post_type' => 'post',
        'post_parent' => $parent_post_id,
        'post_status' => 'publish'
        /* 'category_name' => array('Auto Post Category') */
);
$children = get_posts( $args );

Agregar el parámetro nombre_categoría hace que no se recuperen publicaciones secundarias. Sin el parámetro de categoría, se devuelven las publicaciones secundarias y tienen la propiedad de conjunto de categorías. Sin embargo, parece que no se recupera una lista completa y los resultados varían de una ejecución a otra.

Si el contenido de una publicación automática se edita desde el tablero, la consulta anterior no devuelve esta publicación editada. ¿Por qué?

¿Alguna sugerencia sobre cómo resolver el comportamiento inconsistente y hacer que esto funcione? Soy nuevo en WordPress, y la ayuda en línea es escasa y está dirigida principalmente al usuario del panel.

Usando WordPress 3.0.4, php5.

  • he usado wp_insert_post sin ningún problema. En mi implementación, no estoy devolviendo el objeto WP Error y estoy configurando explícitamente un post_status de publish (evitar wp_publish_post) y un post_date usando date('Y-m-d H:i:s'). Dado que estos no ayudan, ¿ha intentado imprimir $auto_post_id?

    – polarblau

    10 de febrero de 2011 a las 17:16

  • No estoy exactamente seguro de cómo imprimir desde este método. Sé que $auto_post_id devuelve un número razonable: get_post($auto_post_id) puede recuperar una publicación.

    – jprusakova

    10 de febrero de 2011 a las 19:02

  • ¿Cuál es tu razonamiento detrás de todo esto? Me pregunto si hay una solución más simple en la que podamos trabajar.

    – Shawn Werning

    20 de noviembre de 2012 a las 6:21

  • intente comprobar if(wp_insert_post ($auto_post, true)==0){echo “no estoy bien”;}

    – roberto

    22 de noviembre de 2012 a las 4:33

Comprobar el documentación – get_posts() toma un argumento de category, que es el ID de categoría. los category_name argumento se utiliza en una función diferente, query_posts().

Para encontrar el ID de categoría, pase el cursor sobre el enlace en el backend de categorías de WP.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad