我将我的facebook喜好存储在名为fb\\U likes的自定义字段中。我的wordpress帖子顺序按此字段排序,如下所示。
\'meta_key\' => \'fb_likes\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'DESC\',
\'ignore_sticky_posts\' => 1,
\'posts_per_page\' => $wp_query->get(\'posts_per_page\'),
\'paged\' => $paged
乍一看,这似乎很好,但如果你点击页面,你会注意到,有些帖子会显示两次(甚至三次),即使它们只在数据库中显示一次。此外,邮政秩序混乱,似乎改变了自己。
当我使用meta\\u value而不是meta\\u value\\u num时,效果很好,但问题是它的排序是这样的->9,5,4,39,38,37,26-你明白了。所以我需要meta\\u value\\u num才能按预期工作。
有什么问题吗?
编辑:我使用以下代码将facebook的喜欢度写入fb\\U喜欢度的meta\\u值。如果我能以某种方式写入元值,比如这个“001”,而不是这个“1”。这样我就可以轻松地使用orderby=meta\\u value,甚至不需要meta\\u value\\u num。
有没有这样的方法写入数据库?1个喜欢->001,21个喜欢->021
{
if($post->post_type == \'draft\') continue;
$fb = json_decode(file_get_contents(\'http://graph.facebook.com/?id=\'.get_permalink($post->ID)));
if( !isset( $fb->likes) && isset($fb->shares) )
{
$fb->likes = $fb->shares;
}
//$fb->likes = isset($fb->likes) ? $fb->likes : 0;
$this->log("post_id: ({$post->ID}) \\npermalink: ".get_permalink($post->ID) . "\\nfb_likes:". $fb->likes . "\\n");
update_post_meta($post->ID, \'fb_likes\', (int)$fb->likes);
}