Asociar un CPT a una página

2

Tengo mi tipo de publicación personalizada configurado con una jerarquía establecida en verdadero y la url funciona como: Lions News ›S1› Test Post 1 , lo cual es bueno, excepto que debería ir más allá y ser como Lions Minis ›Noticias de Lions› S1 ›Test Post 1 Lions Minis es la página principal para todo. ¿Hay una manera de configurar eso?

La siguiente es mi configuración en functions.php

/** Custom Post Types for Lions News */
 $labels = array(
'name'                          => 'Lions News Categories',
'singular_name'                 => 'Lions Category',
'search_items'                  => 'Search Lions Categories',
'popular_items'                 => 'Popular Lions Categories',
'all_items'                     => 'All Lions Categories',
'parent_item'                   => 'Parent Lions Category',
'edit_item'                     => 'Edit Lions Category',
'update_item'                   => 'Update Lions Category',
'add_new_item'                  => 'Add New Lions Category',
'new_item_name'                 => 'New Lions Category',
'separate_items_with_commas'    => 'Separate Lions Categories with commas',
'add_or_remove_items'           => 'Add or remove Lions Categories',
'choose_from_most_used'         => 'Choose from most used Lions Categories'
);

$args = array(
'label'                         => 'Lions Categories',
'labels'                        => $labels,
'public'                        => true,
'hierarchical'                  => true,
'show_ui'                       => true,
'show_in_nav_menus'             => true,
'args'                          => array( 'orderby' => 'term_order' ),
'rewrite'                       => array( 'slug' => 'lions_news/lions_articles', 'with_front' => false ),
'query_var'                     => true
);

register_taxonomy( 'lions_articles', 'lions_news', $args );

register_post_type( 'lions_news', 
array(
    'labels'                => array(
        'name'              => __( 'Lions News' ),
        'singular_name'     => __( 'Lions News' )
        ),
    'public'                => true,
    'show_ui'               => true,
    'show_in_menu'          => true,
    'supports'              => array( 'title','editor','thumbnail','comments','revisions' ),
    'rewrite'               => array( 'slug' => 'lions_news', 'with_front' => false ),
    'has_archive'           => true
)
);
/** End custom Post Types */

¡Gracias!

    
pregunta Nsokyi 15.07.2011 - 11:29

3 respuestas

5

simplemente deberías poder cambiar esta línea

'rewrite' => array( 'slug' => 'lions_minis/lions_news', 'with_front' => false ),

¡Recuerde visitar siempre el menú Configuración- > Permalinks en wordpress después de hacer un cambio de reescritura para actualizar los enlaces!

    
respondido por el NickFMC 06.01.2015 - 20:25
2

Echa un vistazo a esta línea: 'rewrite' => array( 'slug' => 'lions_news', 'with_front' => false ),

    
respondido por el kaiser 15.07.2011 - 14:30
0

El código de abajo funciona si establece jerárquico en falso en register_post_type (mi entendimiento aquí es que en realidad no necesita relaciones jerárquicas entre las publicaciones de noticias, solo que deben estar asociadas con la jerarquía de páginas).

Lo siguiente es levantado y modificado desde aquí: enlace

/* Hook meta box to just the 'lions_news' post type. */
    add_action( 'add_meta_boxes_lions_news', 'my_add_meta_boxes' );

    /* Creates the meta box. */
    function my_add_meta_boxes( $post ) {

        add_meta_box(
            'my-lions-news-parent',
            'Parent Page',
            'my_lions_news_parent_meta_box',
            $post->post_type,
            'side',
            'core'
        );
    }

    /* Displays the meta box. */
    function my_lions_news_parent_meta_box ( $post ) {

        $parents = get_pages(
            array(
                'post_type'   => 'page',
                'post_status' => 'publish', 
                'sort_column' => 'menu_order',
                'parent' => -1
            )
        );

        if ( !empty( $parents ) ) {

            echo '<select name="parent_id" class="widefat">'; // !Important! Don't change the 'parent_id' name attribute.

            foreach ( $parents as $parent ) {
                printf( '<option value="%s"%s>%s</option>', esc_attr( $parent->ID ), selected( $parent->ID, $post->post_parent, false ), esc_html( $parent->post_title ) );
            }

            echo '</select>';
        }
    }

Puedes reemplazar 'parent' => -1 en get_pages con cualquier ID de página para restringir el menú desplegable y mostrar solo los elementos secundarios de esa página.

Lo más simple desde allí probablemente sería crear una plantilla de página para todas las páginas con artículos de noticias asignados que tengan un bucle personalizado a través de publicaciones secundarias de la página actual.

    
respondido por el Steve82 08.01.2015 - 15:14

Lea otras preguntas en las etiquetas