WordPress

dostosowywanie — niestandardowy typ postu domyślnie to index.php dla strony archiwum

  • 16 marca, 2020
  • 3 min read
dostosowywanie — niestandardowy typ postu domyślnie to index.php dla strony archiwum


Opracowałem niestandardowy motyw z niestandardowym typem postu o nazwie events. Jednak z jakiegoś powodu WP odmawia użycia mojego szablonu strony archiwum z nazwą pliku archive-events.php według hierarchii szablonów WP. WP nadal domyślnie index.php jako szablon dla tego typu postów.

Wcześniej miałem skonfigurowaną stronę w WP, która była ustawiona na ślimak /events/ który jest teraz ślimakiem niestandardowego typu postu. Ta strona jest teraz usunięta i nie wiem, czy to jest problem, który powoduje, że WP odmawia użycia archive-events.php dla mojej listy archiwum dla niestandardowego typu postu. Próbowałem zmodyfikować i ponownie zapisać moją strukturę bezpośredniego łącza, ale to nie zadziałało. Obecnie permastruct jest ustawiony na „Nazwa wpisu”, tj

Więcej szczegółów:

  • Zarejestrowałem niestandardowy typ postu events (kod poniżej)
  • Ślimak typu postu to „wydarzenia”, a poszczególne posty są pomyślnie renderowane w
  • Strona archiwum dla tego typu postów jest dostępna pod adresem /events/ ale używa index.php mimo że utworzyłem szablon archiwum dla typu postu jako archive-events.php
  • Aby potwierdzić, jakiego szablonu WP używa do renderowania strony archiwum dla niestandardowego typu postu, stworzyłem funkcję, która wyświetla $GLOBALS['current_theme_template'] używany do renderowania strony. Potwierdza to, że WP używa index.php renderować stronę archiwum.
  • W moim header.php plik Powtarzam funkcję get_post_type_archive_link('events') aby potwierdzić, że WP uważa, że ​​strona archiwum dla mojego niestandardowego typu postu powinna być
  • The archive.php I index.php Szablony WP są obsługiwane zgodnie z oczekiwaniami, ale szablon dla niestandardowego typu postu jest pomijany przez WP bez względu na wszystko
  • W ramach testu zmieniłem nazwę mojego istniejącego niestandardowego typu postu na coś nowego, ponownie zmapowałem wszystkie moje zapytania do tego CPT i odpowiednio zaktualizowałem nazwy szablonów. Mimo to WP odmawia obsługi cpt-archive.php jako szablon dla niestandardowego typu postu i służy albo archive.php Lub index.php Zamiast.
Warto przeczytać!  Wydarzenie z okazji 20. rocznicy UnlimitedWP WordPress za pośrednictwem WPLift's Eyes!

Oto mój functions.php kod do rejestracji typu postu:

function registerEvents()
{
    $labels = array(
        'name'                  => _x( 'Events', 'Post type general name', 'textdomain' ),
        'singular_name'         => _x( 'Event', 'Post type singular name', 'textdomain' ),
        'menu_name'             => _x( 'Events', 'Admin Menu text', 'textdomain' ),
        'name_admin_bar'        => _x( 'Events', 'Add New on Toolbar', 'textdomain' ),
        <snip>
    );
    $args = array(
        'labels'                => $labels,
        'public'                => true,
        'hierarchical'          => false,
        'publicly_queryable'    => true,
        'exclude_from_search'   => false,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'show_in_rest'          => false,
        'menu_position'         => 5,
        'menu_icon'             => 'dashicons-calendar-alt',
        'capability_type'       => 'post',
        'has_archive'           => true,
        'query_var'             => true,
        'delete_with_user'      => false,
        'supports'              => array( 
            'title',
            'editor',
            'excerpt',
            'thumbnail',
            'page-attributes'
        ),
        'taxonomies'            => array( 'kind' ), // Custom tax previously registered
        'rewrite'               => array( 'slug' => 'events', 'with_front' => false ),
    );
    register_post_type( 'events', $args );
}
add_action( 'init', 'registerEvents' );


Źródło