it-swarm.com.de

die Funktion get_query_var funktioniert überhaupt nicht

Ja, es gibt einige ähnliche Themen zu dieser Funktion. get_query_var ('paged') liefert dasselbe Ergebnis.

Die Sortierung von Blog-Posts funktioniert nicht, wenn get_query_var verwendet wird

Ich benutze wordpress3.5, ich habe mein own php mysql-basiertes System und ich muss eine Blog-Funktion integrieren, und ich muss nur den latest posts in einer separaten PHP-Datei auflisten oreder by post-date. Grundsätzlich sind meine Anforderungen einfach:

list all of posts on a php file, suppose this file's name is blog_show.php

Da ich die API von WordPress außerhalb von WordPress verwenden werde, muss ich zuerst WordPress importieren. Sie können den Weg von hier aus finden. Integration von Wordpress mit Ihren Sites

Hier ist ein Teil meiner blog_show.php

define('WP_USE_THEMES', false);
require_once '../blog/wp-load.php';

global $wp_query;
wp_reset_query();

$current_page = (get_query_var('p')) ? get_query_var('p') : 1;

$query_args = array(
    'orderby' => 'date',
    'order' => 'DESC',
    'post_type' => 'post',
    'post_status' => 'publish',
    'posts_per_page' => 2,
    'paged' => $current_page,
    //'add_args' => true

);
$lateset_posts = new WP_Query($query_args);


$paging_args = array(
    'base'         => '%_%',
    'format'       => '?p=%#%',
    'total'        => 10,
    'current'      => $current_page,
    'end_size'     => 1,
    'mid_size'     => 1,
    'prev_next'    => True,
    'prev_text'    => __('« Previous'),
    'next_text'    => __('Next »')
);
$lateset_posts_paging = paginate_links($paging_args);

Alles ist in Ordnung, ich kann verwenden

$lateset_posts = new WP_Query($query_args);

um herauszufinden was ich posten möchte. Aber ich kann nicht verwenden

get_query_var('p')

Ich bekomme immer den gleichen Wert. Und selbst wenn ich erkläre, dass wp_query nicht akzeptabel ist, kann es immer noch nicht verwendet werden. Fast alle Felder von wp_query sind null.

Weil get_query_var('p') und $wp_query nicht verwendet werden können, kann auch meine Pagnation nicht verwendet werden.

Wie Sie sehen, wird var p nur an zwei Stellen verwendet

$current_page = (get_query_var('p')) ? get_query_var('p') : 1;
$query_args = array(
       //something
       'paged' => $current_page,
    );

und

$paging_args = array(
        'base'         => '%_%',
        'format'       => '?p=%#%', //P's here
        'total'        => 10,
        'current'      => $current_page,
        'end_size'     => 1,
        'mid_size'     => 1,
        'prev_next'    => True,
        'prev_text'    => __('« Previous'),
        'next_text'    => __('Next »')
    );

Ich habe einen Test, auch wenn ich p in paged oder anything else geändert habe, erhalte ich immer noch den gleichen Fehler.

Wo irre ich mich, muss ich zusätzliche PHP-Dateien benötigen? Vielen Dank.

4
diligent

WordPress fügt nicht automatisch alle Abfragezeichenfolgenparameter ($ _GET-Parameter) als query_vars hinzu.

Wenn Query Var somevar nicht registriert ist: example.com/some-page/?somevar=hello - WordPress ignoriert somevar

Wenn Query Var somevar registriert ist: example.com/some-page/?somevar=hello - WordPress speichert den Wert dieses Parameters im Array $ wp_query-> query_vars

Der Unterschied zwischen der Registrierung dieser Variablen bei WordPress besteht darin, ob der Wert im WP_Query-Objekt gespeichert ist. (Er sollte trotzdem über $ _GET verfügbar sein.).

Um Ihre benutzerdefinierte Abfragevariable zu registrieren, sollten Sie Folgendes verwenden:

add_filter('query_vars', 'add_my_var');
function add_my_var($public_query_vars) {
    $public_query_vars[] = 'some_unique_identifier_for_your_var';
    return $public_query_vars;
}

Achten Sie auch darauf, keine WordPress-Standardnamen für query_var zu verwenden - dann werden Sie wahrscheinlich Konflikte bekommen, denke ich.

11