web-dev-qa-db-fra.com

Exclure les articles d'une catégorie spécifique de liens

Je cherchais cela beaucoup… mais tout ce que j'ai, ce n'est pas ce dont j'ai besoin. Je veux simplement montrer les liens suivants et précédents sur single.php (de toutes les catégories, en fonction de la date de publication, pas seulement dans la même catégorie), mais en sautant une catégorie. Par conséquent, si le message suivant (ou précédent) appartient à la catégorie 402, ignorez-le et accédez au message suivant (ou précédent).

ce simple code <?php next_post_link(); ?> fonctionne très bien, mais j'en ai juste besoin pour ignorer les posts de la catégorie 402. Je ne souhaite pas non plus utiliser le titre des posts, mais uniquement les liens ajoutés à "Suivant" et "Précédent". ancre

je vous remercie

1
whitelord

Utilisez le 4ème paramètre $ excluded_terms http://codex.wordpress.org/Function_Reference/next_post_link

<?php next_post_link( $format, $next, $in_same_term = true, $excluded_terms = '402', $taxonomy = 'category' ); ?>

Identique pour le lien précédent_post_link http://codex.wordpress.org/Template_Tags/previous_post_link

$previous = '<span class="meta-nav">Previous Post</span>';
$next = '<span class="meta-nav">Next Post</span>';

<?php previous_post_link( $format, $previous, $in_same_term = true, $excluded_terms = '402', $taxonomy = 'category' ); ?>

Ou vous pouvez créer une balise de modèle comme celle incluse dans Twenty Fourteen

if ( ! function_exists( 'twentyfourteen_post_nav' ) ) :
/**
 * Display navigation to next/previous post when applicable.
 *
 * @since Twenty Fourteen 1.0
 */
function twentyfourteen_post_nav() {
    // Don't print empty markup if there's nowhere to navigate.
    $previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, '', true );
    $next     = get_adjacent_post( false, '', false );

    if ( ! $next && ! $previous ) {
        return;
    }

    ?>
    <nav class="navigation post-navigation" role="navigation">
        <h1 class="screen-reader-text"><?php _e( 'Post navigation', 'twentyfourteen' ); ?></h1>
        <div class="nav-links">
            <?php
            if ( is_attachment() ) :
                previous_post_link( '%link', __( '<span class="meta-nav">Published In</span>%title', 'twentyfourteen' ) );
            else :
                previous_post_link( '%link', __( '<span class="meta-nav">Previous Post</span>', 'twentyfourteen' ) );
                next_post_link( '%link', __( '<span class="meta-nav">Next Post</span>', 'twentyfourteen' ) );
            endif;
            ?>
        </div><!-- .nav-links -->
    </nav><!-- .navigation -->
    <?php
}
endif;
1
Brad Dalton

C’est à cela que servent les types de publication personnalisés: des types de contenu distincts et non liés. Pour votre description, il semblerait que la catégorie 402 ne contienne pas de contenu pertinent pour le lecteur lorsqu'il navigue sur le site, mais les liens next/prev ne sont pas le seul endroit que vous pourriez avoir besoin de gérer et vous devrez également pirater le widget de calendrier. , des publications récentes et un widget de commentaires, la génération de flux RSS, puis il y aura toutes sortes de plugins que vous devrez pirater.

Vous pouvez probablement pirater ces fonctions next/prev, ou même mieux, en écrire une à votre place, mais la méthode future consiste à changer votre code pour utiliser CPT à la place.

0
Mark Kaplun