0

Wordpress で PHP を使用する 現在、各月と年の各投稿のヒット数を返し、さらにタイプ別に分類された一連の関数があります。この情報はすべて現在保存されているため、タイプに関係なく、時間も無視して、各投稿の総ヒット数を返したいと思います。つまり、ヒットの現在の合計を提供します。

現在の機能は次のとおりです。

    function icc_get_view_count($type,$month,$year) {
       global $post;
       if(!isset($month)||($month=='')||!isset($year)||($year=='')) {
       $month = date('m');
       $year = date('Y');
       }
       $post_type = $post->post_type;
       if($post_type == 'partners') {
$post->ID;
$current_views = get_post_meta($post->ID, "icc_views_".$type."_".$month."_".$year, true);
if(!isset($current_views) OR empty($current_views) OR !is_numeric($current_views) ) {
     $current_views = 0;
}
}

return $current_views;
}

function icc_show_views($type,$month,$year) {
   global $post;
   if(!isset($month)||($month=='')||!isset($year)||($year=='')) {
   $month = date('m');
   $year = date('Y');
   }

   $post_type = $post->post_type;
   if($post_type == 'partners') {
echo $current_views = icc_get_view_count($type,$month,$year);
   }
}

その後、次のように呼び出されます。

   <?php icc_show_views('single', $month, $year); ?>

すべての投稿は「icc_views_」で始まり、「type」、「month」、「year」が追加されます。glob() を使用してみました

    $current_views = get_post_meta($post->ID, glob("icc_views_*"), true);

ファイル名を完成させて、タイプ、月、年がすべて返されるようにしますが、これを機能させることはできません。

どんなポインタでも大歓迎です

4

2 に答える 2

0

私はあなたがこれを行うことができるとは思わない:

  1. PHPの「glob()」は、ファイルシステム(OSレベル)のパス名を展開します。Wordpressの「get_post_meta()」はデータベースに保存されているカスタムフィールドを参照していると思います。リンゴとオレンジ。

  2. データベースのワイルドカード記号は「%」になります。とにかく「get_post_meta()」では使えないと思います。

'お役に立てば幸いです..

于 2012-06-14T19:12:35.573 に答える
0

助けてくれてありがとう。もっと単純な答えを探して、最初に各 post_id からヒットの合計を取得してから、必要に応じて除外することで、反対側から作業する必要があると思いました。だから私は他の質問と回答を読んでこのベースを思いつきます:

function icc_show_total_views($hits) {
   global $post;
   $post_type = $post->post_type;
   if($post_type == 'partners') {
    echo $current_views = get_post_meta_hits($post_id);
   }
}

function get_post_meta_hits($post_id){

    global $wpdb;
    $data   =   array();
    $wpdb->query("
            SELECT sum('meta_value')
            FROM $wpdb->postmeta
            WHERE `post_id` = $post_id
                    ");

    foreach($wpdb->last_result as $k => $v){
        $data[$v->meta_value] =   $v->meta_value;
    };
    return $data;
}

しかし、これは「配列」という単語を返します。ここで何か基本的なことを見逃していますか?

フィードバックをありがとう、とても役に立ちました

于 2012-06-15T15:01:36.270 に答える