Crea automáticamente páginas secundarias al guardar una página (principal)

2

Tengo un poco complicado ...

Tengo un tipo de publicación personalizada jerárquica ('shows') que representa eventos. ¿Es posible que el usuario cree una nueva página (es decir, muestre), guarde la página y que Wordpress cree automáticamente un conjunto definido de páginas secundarias con nombres definidos?

Lo ideal sería que cada página secundaria tuviera una Taxonomía personalizada específica aplicada automáticamente a medida que se crea.

La guinda del pastel sería si esas páginas secundarias se guardaran como borradores y no se publicaran en ese momento.

Tenga en cuenta que el número de páginas secundarias, sus nombres y la taxonomía aplicada pueden estar codificados y no cambiarán.

Esto es lo que necesito:

//Save parent page
London 2013

//Children automatically created
London 2013
    -About (taxonomy: about)
    -Visitor Info (taxonomy: info)
    -Exhibitors (taxonomy: exhibitors)
    -Sponsors (taxonomy: sponsors)
    -Press (taxonomy: press)
    
pregunta Jacob 13.02.2013 - 23:54

1 respuesta

6

Use la acción save_post para ejecutar algún código cuando se cree un nuevo programa, luego use wp_insert_post para crear sus páginas secundarias.

Este es un ejemplo para comenzar: en primer lugar, filtre los guardados que se guardan automáticamente, las revisiones de publicaciones, los borradores automáticos y otros tipos de publicaciones. Una vez que sepa que es su tipo de programa, puede verificar si tiene un padre para filtrar los archivos guardados de sus páginas secundarias. A continuación, compruebe si la página ya tiene hijos; de lo contrario, configure los datos de su publicación e inserte las páginas secundarias.

function wpa8582_add_show_children( $post_id ) {  
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;

    if ( !wp_is_post_revision( $post_id )
    && 'show' == get_post_type( $post_id )
    && 'auto-draft' != get_post_status( $post_id ) ) {  
        $show = get_post( $post_id );
        if( 0 == $show->post_parent ){
            $children =& get_children(
                array(
                    'post_parent' => $post_id,
                    'post_type' => 'show'
                )
            );
            if( empty( $children ) ){
                $child = array(
                    'post_type' => 'show',
                    'post_title' => 'About',
                    'post_content' => '',
                    'post_status' => 'draft',
                    'post_parent' => $post_id,
                    'post_author' => 1,
                    'tax_input' => array( 'your_tax_name' => array( 'term' ) )
                );
                wp_insert_post( $child );
            }
        }
    }
}
add_action( 'save_post', 'wpa8582_add_show_children' );
    
respondido por el Milo 14.02.2013 - 00:30

Lea otras preguntas en las etiquetas