1

以下の情報に感謝します: プラグインを使用しないWordpressの人気のある投稿は、WordPressサイト用に自分の人気のある投稿ページテンプレートをまとめるのに大いに役立ちました。ただし、コードを変更して動作を改善する必要があり、どうすればよいかわからないと思います。

新しいページはhttp://sassyginger.com/most-popular-postsにあります。2つの投稿が表示され(5つ表示されるはずの場合)、両方を「ゼロビュー」に関連付けますが、これは正しくありません。

私はPHPに非常に慣れていないので、プラグインコードを使用せずにWordpressの人気のある投稿を微調整して、 5つの投稿を表示し、誤った0ビュービットを省く方法について誰かが教えてくれると助かります。

ありがとうございました!

4

1 に答える 1

1

Wordpressはデフォルトでは投稿のビューを追跡しないため、プラグインを使用したくない場合は、ビューを含むすべての投稿のカスタムフィールドを作成する必要があります。そして、その値を取り、誰かがそのページをロードするすべてのものを1つ追加する関数を記述します。(関数をfunctions.phpに配置するとします)、単一テンプレートから呼び出して、postidを送信します。

関数は次のようになります。

function addPostView($postID) {
$views = 'post_views'; // post_views is the custom field name
$count = get_post_meta($postID, $views, true); // grab the value from that custom field

// Now we need to check that the value we just grabbed isn't blank, if it is we need to set it to 1, since it would be our first view on this post.
if($count==''){
    $count = 0;
    update_post_meta($postID, $views, '1');
}else{
    // else we can just add one to the number.
    $count++;
    update_post_meta($postID, $views, $count);
}
}

また、単一テンプレートでは、次のような場所で関数を呼び出します。

addPostView(get_the_ID());

次に、問題2は、演算子を使用して投稿をクエリできないため、ビューが最も多い5つの投稿だけをクエリできないため、すべての投稿をクエリし、ビューのカスタムフィールドと投稿IDを配列に格納する必要がある場合があります。次に、配列を並べ替えます(phpの並べ替え関数を使用)。これで、各投稿IDが取得され、配列内のビューが並べ替えられて投稿されます。したがって、最初の5つ(または並べ替え方法によっては最後)を取得すると、ビュー数が最も多い5つのpostIDが取得されます。

//ordinary wp_query
$i = 0; // keeping track of our array
//while(post-> etc....
    global $post;
    $views = get_post_meta($post->ID, 'post_views', true); // Grab our value
    /* You could also use an object here */
    $postArray[$i][0] = $views; // set it in slot $i of our array
    $postArray[$i][1] = $post->ID; // and also set the postID in the same slot

    $i++;
//endwhile;

配列をソートするには:

 rsort($postArray);
 $postArray = array_slice( $postArray, 0, 5 ); // grab only the first 5 values, which will be the ones with highest views.

次に、これらのIDをクエリするだけの2番目のクエリを実行する必要があります('post__in'セレクターを使用すると、必要に応じてループアウトできます。

このコードは試していませんが、過去に同様のことをしたことがあります。それは最善の解決策ではないかもしれませんが、それは仕事を成し遂げます。すべての投稿をクエリして(ALOT OF THEMがある場合)、5つほどの投稿を取得するだけでは、良い習慣にはなりません:)

于 2012-06-26T08:57:30.693 に答える