it-swarm.com.de

Holen Sie sich die aktuelle Seitennummer

In einer Situation, in der man 20 Beiträge pro Seite hat. Ich möchte die aktuelle Seitennummer erhalten, um unten einige nette Seitenlinks zu machen. Wie bekommst du die aktuelle Seite? Ich habe es versucht

<?php echo '(Page '.$page.' of '.$numpages.')'; ?>

und auf jeder Seite steht nur Seite 1 von 1.

Irgendwelche Ideen,

Wunderbar

10
Robin I Knight

Wenn WordPress eine solche Paginierung verwendet, gibt es eine Abfragevariable $paged, die es eingibt. Seite 1 ist also $paged=1 und Seite 15 ist $paged=15.

Sie können den Wert dieser Variablen mit dem folgenden Code abrufen:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

Es ist etwas schwieriger, die Gesamtzahl der Seiten zu ermitteln. Zuerst müssen Sie alle Beiträge in der Datenbank zählen. Filtern Sie anschließend nach den veröffentlichten Posts (im Gegensatz zu Entwürfen, geplanten Posts, Papierkorb usw.). Dann müssen Sie diese Anzahl durch die Anzahl der Beiträge dividieren, die Sie auf jeder Seite erwarten:

$total_post_count = wp_count_posts();
$published_post_count = $total_post_count->publish;
$total_pages = ceil( $published_post_count / $posts_per_page );

Ich habe dies noch nicht getestet, aber möglicherweise müssen Sie $posts_per_page auf dieselbe Weise abrufen, wie Sie $paged abgerufen haben (mit get_query_var()).

15
EAMann

Sie könnten es mit einer einzelnen Codezeile tun, möchten den Code aber auch an anderen Stellen einfügen, sodass eine Funktion in der Regel sinnvoller ist.

function current_paged( $var = '' ) {
    if( empty( $var ) ) {
        global $wp_query;
        if( !isset( $wp_query->max_num_pages ) )
            return;
        $pages = $wp_query->max_num_pages;
    }
    else {
        global $$var;
            if( !is_a( $$var, 'WP_Query' ) )
                return;
        if( !isset( $$var->max_num_pages ) || !isset( $$var ) )
            return;
        $pages = absint( $$var->max_num_pages );
    }
    if( $pages < 1 )
        return;
    $page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
    echo 'Page ' . $page . ' of ' . $pages;
}

HINWEIS: Code kann in Ihre Funktionsdatei aufgenommen werden.

Rufen Sie einfach die Funktion auf, in der Sie die Meldung "Seite x von y" anzeigen möchten, z.

<?php current_paged(); ?>

Wenn Sie den Code für eine benutzerdefinierte Abfrage benötigen, z. Eine, die Sie mit WP_Query erstellt haben, geben Sie einfach den Namen der Variablen mit der Abfrage an die Funktion weiter.

Beispiel nicht existierende Abfrage:

$fred = new WP_Query;
$fred->query();
if( $fred->have_posts() ) 
... etc..

Abrufen der aktuellen Seite für die benutzerdefinierte Abfrage mithilfe der zuvor veröffentlichten Funktion.

<?php current_paged( 'fred' ); ?>

Wenn Sie die Unterstützung für benutzerdefinierte Abfragen einfach ganz vergessen möchten und einen Einzeiler suchen, sollten Sie dies tun.

<?php echo 'Page '. ( get_query_var('paged') ? get_query_var('paged') : 1 ) . ' of ' . $wp_query->max_num_pages; ?>

Hoffentlich hilft das.. :)

6
t31os

Wie oben erwähnt - eine einfachere Möglichkeit, die maximale Anzahl von Seiten zu erhalten, ist mit:

global $wp_query

$wp_query->max_num_pages

0
Alex Standiford