使用通配符“完成”文件名的剩余部分

时间:2012-06-14 19:05:12

标签: php

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

以完成文件名,因此无论如何都会返回类型,月份和年份,但似乎无法使其生效。

任何指针都会非常感激

2 个答案:

答案 0 :(得分:0)

我认为你不能这样做:

  1. PHP“glob()”扩展了文件系统(操作系统级别)路径名。我相信Wordpress“get_post_meta()”是指存储在数据库中的自定义字段。苹果和橘子。

  2. 数据库通配符符号为“%”。我不认为它可以与“get_post_meta()”一起使用。

  3. '希望有所帮助..

答案 1 :(得分: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;
}

但这会返回'Array'这个词。我在这里错过了什么基础吗?

再次感谢您的反馈,非常有帮助