0

独自のテーブルにある値で並べ替えられたカスタム投稿タイプ リストを表示しようとしています。私は wti_like_posts と呼ばれるプラグインを使用しています。これにより、ユーザーは親指を上げたり下げたりして投稿を評価できます。

このテーブルには、それに関連付けられたスコアと post_id が含まれています。クエリの「orderby」の既存のオプションに「評価」オプションを追加できるようにしたいので、投稿をクエリするときにそのスコアを考慮することができます。

そうする良い方法を知っていますか?add_filter を使用する必要があると思いますが、すでに試してみましたが、わかりません。どんな助けでも大歓迎です!

前もって感謝します

4

1 に答える 1

0

両方のテーブルを結合して結果を取得するには、カスタム SQL クエリを作成する必要があります。

global $wpdb; 
$sql = "SELECT * FROM ".$wpdb->prefix."wp_posts, ".$wpdb->prefix."ratings_table WHERE wp_post.id = ratings_table.post_id";
$posts = $wpdb->get_results($sql);
echo "<ul>";
foreach ($posts as $post){
    echo '<li>'.$post->title.'|'.$post->score.'<br/>';
    echo '</li>';
}
echo "</ul>";

未検証!

テーブルと列の名前を調整する必要があります。

[更新] get_posts() を使用するには、orderby=rating&meta_key=foo を orderby=meta_value&meta_key=rating に変更する必要があります

下記参照:

$args = array(
 'numberposts'     => 10,
 'offset'          => 0,
 'orderby'         => 'meta_value',
 'order'           => 'ASC', 
 'meta_key'        => 'rating', 
 'post_type'       => 'post',
 'post_status'     => 'publish' 
 );
 $results = get_posts( $args );
于 2012-10-31T12:09:36.877 に答える