Sie werden diesen Code ein bisschen zwicken müssen, aber es sollte Sie in den richtigen losgeht Richtung. Das ändert die SQL-Abfrage, die verwandt wird, um die Posts zu ziehen.
Vor Ihrem query_posts(); Fügen Sie den folgenden Code hinzu:
function selectSticky($sql){
global $sticky_posts, $wpdb;
$sticky_posts = get_option('sticky_posts');
$sticky_posts = implode(', ', $sticky_posts);
return "IF({$wpdb->posts}.ID IN ($sticky_posts), 2, 1) as sticky, ".$sql;
}
function whereSticky($sql){
global $sticky_posts, $wpdb;
$sql .= " OR {$wpdb->posts}.ID IN ($sticky_posts)";
return $sql;
}
function orderSticky($sql){
$sql = "sticky DESC, ".$sql;
return $sql;
}
// just for checking sql, you can remove this once everything works
function requestSticky($sql){
echo $sql."<br/><br/>";
return $sql;
}
add_action('posts_fields', 'selectSticky');
add_action('posts_where', 'whereSticky');
add_action('posts_orderby', 'orderSticky');
add_action('posts_request', 'requestSticky');
Das Problem ist, sobald ich die "sticky" -Option für einen anderen Beitrag überprüfen, werde ich zwei klebrige Beiträge an der Spitze meiner Liste haben, und diese werden weiter wachsen, während ich weiterhin neue "sticky" Beiträge hinzufügen. Ich möchte nur 1 klebrigen Beitrag angezeigt werden. – gabriel