it-swarm.com.de

add_query_arg funktioniert nicht

Ich habe einen Filter hinzugefügt, um beim Navigieren in Kategorien einen Parameter an die URL anzuhängen. Dies wird verwendet, um Beiträge beim Durchsuchen einer Kategorie nur dann nach ihren Stimmen zu sortieren, wenn ein sort-Parameter festgelegt ist.

Wenn Sie beispielsweise auf Alle Beiträge mit den meisten Stimmen anzeigen klicken, werden Beiträge mit hohen Stimmen angezeigt. Von dort aus können Sie die am häufigsten bewerteten Beiträge nach Kategorie anzeigen, indem Sie einen sort=most_voted oder sort=doleast_voted an die URL mit cat=? anhängen.

add_filter( 'category_link','append_parameter', 10, 2 );

function append_parameter( $link, $query ) {
$my_parameter = $query->query_vars['sort']; //get sort value
if ( isset($my_parameter) ) { //if browsing posts by votes
    $link = add_query_arg( 'sort', $my_parameter, $link );
}
    return $link;
}

Ich kann nicht herausfinden, warum der Sortierparameter nicht an die URL angehängt wird. Dies funktioniert jedoch ohne die if-Anweisungen und einen Wert anstelle des $my_parameter im add_query_arg.

EDIT: Neuer Arbeitscode

    add_filter( 'category_link','append_parameter', 10, 2 );

    function append_parameter( $link, $my_parameter ) {
    $my_parameter = $_GET['sort']; //get sort value       
    if ( isset($my_parameter) ) { 
        $link = add_query_arg( 'sort', $my_parameter, $link );
    }
        return $link;
    }
1
wpStudent

Wenn Sie sich ansehen, wo der Hook category_link in category-template.php definiert ist, werden Sie feststellen, dass dieser spezielle Hook zwei Variablen übergibt. Die zweite Variable ist die Kategorie-ID, aber Ihre Rückruffunktion behandelt diese zweite eingehende Variable als Abfrageobjekt.

Einfach ausgedrückt, Sie suchen nach einer query_vars -Eigenschaft/einem __schlüssel, die/der nicht existiert und nicht existieren kann, da die eingehende Variable kein Abfrageobjekt ist.

2
t31os