Mesajların bir listenin en üstündeki tek bir yapışkan mesajı göster

2 Cevap php

Ana sayfamda Ben mesajların bir listesi var, ve üst ben mesajların kalan ardından sadece en son "yapışkan" yazısı, göstermek istiyorum. Bunu başarmak için bir yol var mı?

Sadece birini kullanarak için bonus puan query_posts() .

(Ben iki query_posts() kullanarak bunu nasıl biliyorum, ama ben daha az yorucu çözüm arıyorum.)

2 Cevap

Eğer herhangi bir eklenti denediniz mi? Örneğin bunun için? http://wordpress.org/extend/plugins/wp-sticky/ Onları değiştirmek / kullanmak daha kolay olabilir.

Bu kodu biraz oynamak gerekir ama bunu doğru yönde gidiyor almalısınız. Bu ne yapıyor mesajları çekmek için kullanılan sql sorgu değişiklik olduğunu.

Lütfen query_posts önce (); aşağıdaki kodu ekleyin:

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' );