it-swarm.com.de

Wie kann ich einen Link "Alle Beiträge anzeigen" in einem paginierten Termarchiv bereitstellen?

Ich habe einen benutzerdefinierten Beitragstyp namens game_go und eine Taxonomie namens game_go_series. Einige Beispielbegriffe sind chase, compete, victory usw. Ich habe eine Datei namens taxonomy-game_go_series, die nur die Beiträge in paginierter Form eines individual Ausdrucks anzeigt.

Die zweite Seite, die ich erstellen möchte, muss alle die Beiträge dieses einzelnen Begriffs anzeigen. Mit anderen Worten, es gäbe zwei Seiten mit demselben Begriff.

Außerdem, und das ist wichtig, weiß ich, wie man das macht, indem man den Ausdruck im Dateinamen verwendet (zB taxonomy-game_go-chase.php), aber da wir mehr Ausdrücke hinzufügen, wird es schwierig, jedes Mal eine Vorlagendatei zu erstellen .

Gibt es eine Möglichkeit, auf der Seiten nach Begriffstaxonomie automatisch erstellt werden, wenn neue Begriffe hinzugefügt werden?

Lassen Sie mich wissen, ob ich weitere Erläuterungen geben kann. Vielen Dank!

2
bhood

Diese Methode richtet es so ein, dass, wenn Sie am Ende Ihrer Taxonomie-Archive/all hinzufügen, alle Posts angezeigt werden.

Stellen Sie zunächst bei der Registrierung der Taxonomie sicher, dass Sie den ep_mask auf EP_CATEGORIES setzen. Dies bedeutet, dass wir einen benutzerdefinierten Endpunkt hinzufügen können.

function wpse_277843_register_taxonomy() {
    register_taxonomy( 'game_go_series', 'game_go', array(
        'rewrite' => array(
            'slug'    => 'series',
            'ep_mask' => EP_CATEGORIES,
        ),
    ) );
}
add_action( 'init', 'wpse_277843_register_taxonomy' );

Kopieren Sie nicht den gesamten Code, sondern stellen Sie sicher, dass Sie das ep_mask -Element in Ihrem Code ausführen, da es wahrscheinlich noch nicht so eingestellt ist.

Gehen Sie folgendermaßen vor, um ep_mask zu benutzerdefinierten Taxonomien hinzuzufügen, die von der Benutzeroberfläche für Beitragstypen erstellt wurden:

function wpse_277843_cptui_ep_mask( $args, $taxonomy_slug, $taxonomy_args ) {
    if ( 'game_go_series' == $taxonomy_slug ) {
        $args['rewrite']['ep_mask'] = EP_CATEGORIES;
    }

    return $args;
}
add_filter( 'cptui_pre_register_taxonomy', 'wpse_277843_cptui_ep_mask', 10, 3 );

Erstellen Sie dann den all -Rewrite-Endpunkt in der EP_CATEGORIES-Maske.

function wpse_277843_all_endpoint() {
    add_rewrite_endpoint( 'all', EP_CATEGORIES );
}
add_action( 'init', 'wpse_277843_all_endpoint' );

Dies bedeutet, dass der Endpunkt auch für Kategorien gültig ist, wir können sie jedoch später für jedes benutzerdefinierte Verhalten ignorieren. Leider scheint das Hinzufügen von Endpunkten nur zu einer benutzerdefinierten Taxonomie derzeit nicht möglich zu sein. Es bedeutet nur, dass beim Aufrufen von /category/category-name/all kein 404 ausgelöst wird. Der /all wird einfach ignoriert (oder Sie können dasselbe Verhalten für Kategorien anwenden, wenn Sie möchten).

Wenn Sie dann in pre_get_posts in Ihrer benutzerdefinierten Taxonomie auf den Endpunkt all zugreifen, setzen Sie posts_per_page auf -1:

function wpse_277843_all_posts( $query ) {
    if ( $query->is_main_query() && $query->is_tax( 'game_go_series' ) ) {
        if ( isset( $query->query_vars['all'] ) ) {
            $query->set( 'posts_per_page', -1 );
        }
    }
}
add_action( 'pre_get_posts', 'wpse_277843_all_posts' );

Anschließend können Sie der/all-Version einen Link zu Ihrer Vorlage hinzufügen, wenn Sie sich bereits in einem Taxonomie-Archiv befinden und die/all-Version noch nicht vorhanden ist:

<?php if ( is_tax( 'game_go_series' ) && get_query_var( 'all', false ) === false ) : ?>
    <a href="<?php echo get_term_link( get_queried_object() ); ?>all/">
        Show All
    </a>
<?php endif; ?>
1
Jacob Peattie