web-dev-qa-db-fra.com

Autoriser un nombre variable de commentaires avant la pagination

Une option dans les paramètres d’administrateur vous permet de définir le nombre de commentaires à répertorier avant de créer une nouvelle page pour les suivants. J'aimerais avoir le même nombre de commentaires pour tous mes articles, à moins qu'il n'appartienne à une catégorie spécifique (pour laquelle je souhaite définir un nombre différent de commentaires avant la pagination).

Comment puis je faire ça?

6
Bachir Messaouri

Celles-ci comportent plusieurs composants: quelle option elle-même contient et comment sa valeur est stockée et réutilisée par divers éléments de code core.

Je ne suis pas sûr que ce soit parfait, mais ma réponse rapide serait:

new Adjust_Comments_Per_Page( 10, 'years', 'category' );

class Adjust_Comments_Per_Page {

    private $amount;
    private $term;
    private $taxonomy;

    /**
     * @param int    $amount
     * @param string $term
     * @param string $taxonomy
     */
    function __construct( $amount, $term, $taxonomy ) {

        $this->amount   = $amount;
        $this->term     = $term;
        $this->taxonomy = $taxonomy;

        add_action( 'template_redirect', array( $this, 'template_redirect' ) );
    }

    function template_redirect() {

        global $wp_query;

        if ( is_single() && has_term( $this->term, $this->taxonomy ) ) {

            $wp_query->set( 'comments_per_page', $this->amount );
            add_filter( 'pre_option_comments_per_page', array( $this, 'pre_option_comments_per_page' ) );
        }
    }

    /**
     * @return int
     */
    function pre_option_comments_per_page() {

        return $this->amount;
    }
}
2
Rarst