it-swarm.com.de

Übergeben Sie einen CPT an eine Seite

Ich habe meinen benutzerdefinierten Beitragstyp so eingerichtet, dass die Hierarchie auf "true" gesetzt ist, und die URL funktioniert wie folgt: Lions News ›S1› Testbeitrag 1 , der ansonsten gut ist Es sollte noch weiter gehen und wie Lions Minis sein. ›Lions News› S1 ›Testbeitrag 1 Lions Minis sind die übergeordnete Seite für alles. Gibt es eine Möglichkeit, das einzurichten?

Das Folgende ist mein Setup in 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 */

Vielen Dank!

2
Nsokyi

sie sollten nur in der Lage sein, diese Zeile zu ändern

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

Denken Sie daran, immer das Menü Einstellungen-> Permalinks in WordPress aufzurufen, nachdem Sie eine Änderung am Umschreiben vorgenommen haben, damit die Links aktualisiert werden!

5
NickFMC

Schauen Sie sich diese Zeile an: 'rewrite' => array( 'slug' => 'lions_news', 'with_front' => false ),

2
kaiser

Der folgende Code funktioniert, wenn Sie in register_post_type hierarchisch auf false setzen (meines Erachtens benötigen Sie hier keine hierarchischen Beziehungen zwischen den Nachrichtenbeiträgen selbst, nur, dass sie der Seitenhierarchie zugeordnet werden müssen).

Folgendes wird von hier aus aufgehoben und geändert: http://justintadlock.com/archives/2013/10/07/post-relationships-parent-to-child

/* 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>';
        }
    }

Sie können den 'parent' => -1 in get_pages durch eine beliebige Seiten-ID ersetzen, um das Dropdown-Menü so einzuschränken, dass nur untergeordnete Elemente dieser Seite angezeigt werden.

Am einfachsten wäre es wahrscheinlich, eine Seitenvorlage für alle Seiten mit zugewiesenen Nachrichtenartikeln zu erstellen, die eine benutzerdefinierte Schleife durch untergeordnete Beiträge der aktuellen Seite aufweist.

0
Steve82