Comment modifier dynamiquement le nombre de publications par page dans WordPress
P粉256487077
P粉256487077 2023-09-02 09:13:54
0
1
337

Je souhaite modifier le nombre de posts affichés sur certaines pages de mon site WordPress.

J'ai trouvé l'extrait de code suivant ici :

$postsPage = $settings["postspage"]; query_posts('posts_per_page='.$postsPage);

Appeler avant if (have_posts()) while (have_posts()) the_post()

Je suis très nouveau sur PHP, mais ce que j'essaie, c'est ceci

... si ( is_front_page()) { $postsPage = $settings["postspage"] + 1 ; }elseif ( is_tag()) { $postsPage = $settings["postspage"] - 2; } autre { $postsPage = $settings["postspage"]; } query_posts('posts_per_page='.$postsPage); ... 

Mais malheureusement, cela ne fonctionne pas. Au lieu de cela, il ne renvoie qu'une seule publication de la page d'accueil au lieu des 5 publications + 1 définies dans le menu WP. Je peux coder en dur la valeur souhaitée comme $postPage = 6; pour is_front_page et cela fonctionne bien. Pour une raison quelconque, je ne peux rien ajouter/soustraire de la valeur donnée par $settings["postspage"]. Cela fonctionne également si je ne change pas la valeur (clause else). Qu'est-ce que j'ai raté?

J'ai essayé de convertir la valeur de $settings["postspage"] en un entier car je pensais qu'elle pourrait être renvoyée sous forme de chaîne. J'utilise : $postsPage = (int)$settings["postspage"] + 1; ou $postsPage = intval($settings["postspage"]) + 1;< ;/code>Mais sans succès. Comme je ne connais pas très bien les fonctions wordpress et leurs variables, je cherchais la raison pour laquelle je ne peux pas modifier le nombre de posts. J'apprécierais tous les conseils!

P粉256487077
P粉256487077

répondre à tous (1)
P粉153503989

On ne sait pas où vous mettez ce code et comment le trouver$settings, mais cela devrait fonctionner.

add_action( 'pre_get_posts', 'alter_number_of_posts' ); function alter_number_of_posts( $query ) { if ( !$query->is_main_query() ){ return; } $posts_per_page = get_option( 'posts_per_page' ); if ( is_front_page() ) { $query->set( 'posts_per_page', $posts_per_page + 1 ); return; } if ( is_tag() ) { $query->set( 'posts_per_page', $posts_per_page - 2 ); return; } }

$query通过引用传递,因此您对其所做的任何更改都将反映在全局查询对象中。您不需要返回它,这意味着您可以安全地从每个条件内的函数返回,而不是使用elseif.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!