WordPress - 列出具有特定meta_key值的自定义类型

时间:2014-11-07 09:40:42

标签: php mysql wordpress meta-key

所以我有以下

SELECT wp_posts.ID, wp_posts.post_author,wp_posts.post_date,wp_posts.post_content,wp_posts.post_title,wp_posts.post_excerpt,wp_postmeta.meta_value
FROM wp_posts
INNER JOIN wp_postmeta
ON wp_posts.id=wp_postmeta.post_id
WHERE wp_postmeta.meta_key='cm_video' and post_status='publish'
ORDER BY wp_posts.id DESC;

带回我需要的东西(差不多)。 meta_value的格式为

a:2:{s:4:"code";s:27:"http://youtu.be/xpiL05fCE1E";s:4:"type";s:7:"youtube";}

仅仅http://youtu.be/xpiL05fCE1E带回来的最简单方法是什么?这里可以存在各种其他值,例如embed和iframe代码。

我应该使用WordPress内部的东西吗?

我想出了这个似乎可以解决问题的方法。想法?

SELECT 
wp_posts.ID, wp_posts.post_author,wp_posts.post_date,wp_posts.post_content,wp_posts.post_title,wp_posts.post_excerpt,SUBSTRING_INDEX(SUBSTRING_INDEX(wp_postmeta.meta_value, '";', 2), ':"', -1)
FROM wp_posts
INNER JOIN wp_postmeta
ON wp_posts.id=wp_postmeta.post_id
WHERE wp_postmeta.meta_key='cm_video' and post_status='publish'

由于

2 个答案:

答案 0 :(得分:0)

使用unserialize()方法

$a='a:2:{s:4:"code";s:27:"http://youtu.be/xpiL05fCE1E";s:4:"type";s:7:"youtube";}';
$a = unserialize($a);
print_r($a);

//output
Array ( [code] => http://youtu.be/xpiL05fCE1E [type] => youtube )

echo $a['code'];

以下是两种类型的变量

a = array and 2 is the dimension of the array
s = string and 4 is the length of the string

答案 1 :(得分:0)

我们将使用wp_query:

以正确的格式获得相同的内容
     $query = new WP_Query( array ( 
                                    'post_type' => 'product', 
                                    'orderby' => 'meta_value_num', 
                                    'meta_key' => 'cm_video' ) );

     print_r($query);

现在,如果$ query对象中包含您的值中的代码元素。打印出来:

     echo $query->code;

希望它对你有用,如果你需要任何进一步的帮助,请告诉我。