0

私のホームページには投稿のリストがあり、一番上に最新の「スティッキー」投稿のみを表示し、その後に残りの投稿を表示したいと考えています。これを達成する方法はありますか?

1つだけ使用するためのボーナスポイントquery_posts()

( two を使用してそれを行う方法は知っていますquery_posts()が、負担の少ない解決策を探しています。)

4

2 に答える 2

1

プラグインを試しましたか?例えばこれ?http://wordpress.org/extend/plugins/wp-sticky/それらを使用/変更する方が簡単かもしれません。

于 2009-08-18T14:52:59.150 に答える
0

このコードを少し調整する必要がありますが、正しい方向に進むはずです。これが行っているのは、投稿をプルするために使用されるSQLクエリを変更することです。

query_posts();の前 次のコードを追加します。

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' );
于 2009-08-13T19:53:51.880 に答える