web-dev-qa-db-fra.com

Un moyen de détecter la page d'un article

Je me demande s’il existe un bon moyen de savoir de quelle page d’archive provient un article. J'ai essentiellement besoin de la position de la publication dans l'ordre total, puis de la diviser par l'option 'posts_per_page'. Le blocage que je suis en train d’obtenir correspond à la position ou au décalage de la position du poste.

EDIT: tout en étant sur le template SINGLE POST.

Quoi qu'il en soit, les vars de requête $ wp_query global et 'page'/'paginé' habituels sont toujours 0 - ils ne me mèneront nulle part.

2
Drew Gourley

D'accord, tant pis. J'ai résolu le problème en faisant cela en haut du modèle de publication unique:

$position_query = array( 'post_type' => 'portfolio', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => -1 );
$position_posts = get_posts($position_query); $count = 0;
foreach ($position_posts as $position_post) { $count++;
    if ($position_post->ID == $current_id) { $position = $count; break; }
}
$posts_per_page = get_option('posts_per_page');
$result = $position/$posts_per_page;
$current_page = ceil($result);
0
Drew Gourley

Si vous êtes à la page 2+, vous aurez accès au global $page, qui devrait vous indiquer le numéro de page sur lequel vous vous trouvez. Il y en a aussi d’autres qui valent le coup d’être (jamais savoir où est présent/actif): global $multipage, $numpages;.

Vous pouvez également consulter la page en cours via la fonction principale get_query_var(); . Fondamentalement, le global $page vient de là.

// Using get_query_var()
$paged = get_query_var('page') ? get_query_var('page') : false;

// Or via the global wp_query object
$paged = $GLOBALS['wp_query']->query_vars['page'] ? $GLOBALS['wp_query']->query_vars['page'] : false;

if ( $paged )
    // do stuff - @example echo "Current page is {$paged}";
1
kaiser

J'avais besoin de quelque chose comme ça pour les célibataires seulement et légèrement simplifié la réponse acceptée:

  $position_query = array( 'post_type' => 'post','order'=>'DESC', 'numberposts' => -1 );
  $position_posts = get_posts($position_query); $count = 0;

  foreach ($position_posts as $position_post) { $count++;
        if ($position_post->ID == $post->ID) { $current_page = $count; break; }
   }

  $total_posts = count($position_posts);

Ceci peut être utilisé dans ce contexte: 'Page 1 sur 10' 1 étant $ current_page et 10 étant $ total_posts

0
matpol