web-dev-qa-db-fra.com

La pagination ne fonctionne pas sur la page statique

J'utilise le code suivant pour afficher des fichiers multimédias sur une page statique personnalisée. Les fichiers s'affichent correctement mais la pagination correspond à not fonctionne. Comment puis-je résoudre ce problème?

Le code suivant montre les fichiers multimédia:

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
    'post_type'      => 'attachment',
    'posts_per_page' => '10',
    'paged'          => $paged,
    /* 'numberposts' => -1, */
    'post_status'    => null,
    'author'         => $current_user->ID,
    'post_parent'    => $post->ID,
    /* 'caller_get_posts' => 1, */
);
// The Query
$query = new WP_Query( $args );

$attachments = get_posts( $args );
if ( $attachments ) {
    foreach ( $attachments as $attachment ) {
        echo '<tr><td><a href="' . wp_get_attachment_url( $attachment->ID ) .
            '" rel="shadowbox" title="' . $attachment->post_excerpt . '">';
        echo ($attachment->_wp_attached_file);
        echo '</a>
        </td>';
        </tr>';
    }
}

Ajout suivant à functions.php:

if ( ! function_exists( 'my_pagination' ) ) :
    function my_pagination() {
        global $wp_query;       
        $big = 999999999; // need an unlikely integer        
        echo paginate_links( array(
            'base'         => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
            'format'       => '?paged=%#%',
            'current'      => max( 1, get_query_var( 'paged' ) ),
            'total'        => $wp_query->max_num_pages,
            'prev_next'    => True,
            'prev_text'    => __( '« Previous' ),
            'next_text'    => __( 'Next »' ),
            'type'         => 'plain',
            'add_args'     => False,
            'add_fragment' => '',
            'before_page_number' => '',
            'after_page_number'  => ''
        ) );
    }
endif;

Le numéro de page ou la pagination ne fonctionne pas, appelant la fonction dans ma page statique comme suit:

echo my_pagination( $args );
1
user80689

Cher, j’ai perdu ma semaine sur ce problème, en gros, lorsque vous sélectionnez une page statique comme page d’accueil dans la lecture-> lecture de wordpress, le comportement complet de la liste des choses est modifié; en gros, les pages statiques ne sont jamais destinées à la pagination. la variable $ paged, elle retournera toujours zéro même si vous définissez sa valeur sur 1, la pagination actualisera simplement votre page, car sa page n'est pas une page de fichier valide .php est déjà une fonction de taxonomie appelée dans index.php de main wordpress la fonction retournera toujours la même chose, peu importe ce que vous faites,

La solution consiste à faire en sorte qu'un fichier index.php copie tout le contenu de cette page statique dans ce fichier, puis le remplace par votre index.php et sélectionnez la dernière publication dans setting-> reading of wordpress

Maintenant, si vous ne voulez vraiment pas jouer avec cela, mais que vous voulez tout de même avoir la pagination, vous devez écrire un petit code pour la pagination.

en gros, home.com/page/2 ne fonctionnera jamais, mais home.com/?page=2 fonctionnera toujours, mais la modification de la structure de permalien la modifiera à tout moment. Nous allons donc créer une fonction de pagination qui appellera la page suivante avec home.com. /? page = 2 URL de structure

/* ------------------------------------------------------------------*/
/* PAGINATION */
/* ------------------------------------------------------------------*/

//paste this where the pagination must appear

global $wp_query;
$total = $wp_query->max_num_pages;
// only bother with the rest if we have more than 1 page!
if ( $total > 1 )  {
     // get the current page
     if ( !$current_page = get_query_var('paged') )
          $current_page = 1;
     // structure of "format" depends on whether we're using pretty permalinks
     if( get_option('permalink_structure') ) {
         $format = '?paged=%#%';
     }
     echo paginate_links(array(
          'base'     => get_pagenum_link(1) . '%_%',
          'format'   => $format,
          'current'  => $current_page,
          'total'    => $total,
          'mid_size' => 4,
          'type'     => 'list'
     ));
}

si vous incluez ce code où ceci plutôt que la pagination actuelle, vous le verrez fonctionner :)

1
Ubaid Rehman

La question est un peu plus ancienne, mais ma réponse me sera utile, j'espère, car j'étais dans cet état depuis deux ou trois jours et je l'ai résolue maintenant. Le simple fait est

Les pages de garde statiques utilisent get_query_var ('page') et non pas get_query_var ('paged').

0

// Son travail sur la page d'accueil définit le paramètre "paginé" (utilisez 'page' si la requête est sur une page de garde statique)

<?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : '1';
$args = array (
    'nopaging'               => false,
    'paged'                  => $paged,
    'posts_per_page'         => '1',
    'post_type'              => 'post',
    'category__not_in' => array(97),
);

// The Query
$query = new WP_Query( $args );
print_r($query);
$total_pages = $query->max_num_pages;


if ($total_pages > 1){

    $current_page = max(1, get_query_var('paged'));
    echo '<div class="navigation">';

    echo paginate_links(array(
        'base' => get_pagenum_link(1) . '%_%',
        'format' => '?paged=%#%',
        'current' => $current_page,
        'total' => $total_pages,
        'type'      => 'list',
        'prev_text'          => __('Previous Posts'),
        'next_text'          => __('More Posts'),
    ));
    echo '</div>';
}
0
satinder ghai

La pagination est toujours basée sur la requête principale qui, dans votre cas, est une page statique et n'a qu'une page, donc aucune pagination.

Vous devez faire un simple piratage comme prévu dans cette réponse

0
Mohsin