因此,我试图在get\\u posts调用中过滤掉某些帖子。本质上,我希望能够指定一个特定的帖子块,并且只获取与该块对应的帖子。现在我有一个包含块ID和post ID的表,所以我一直在研究如何使用posts\\u连接和posts\\u where挂钩。但是,我需要能够根据客户端当前选择的内容动态修改检索到的块。为此,我正在使用cookie跟踪客户端选择的内容。我觉得应该能够将块ID作为给定数组中的另一个值传递给get\\u posts,但我不知道如何检索该值。所以我的问题是:我应该怎么做?
似乎最简单、最优雅的解决方案就是添加以下内容:
$postargs = array(
\'blockID\' => $id
);
$posts = get_posts($postargs);
我只是不知道如何在我的钩子函数中:function set_block_filter($id){
/* This should probably use the posts_join hook */
/* $join = \'LEFT JOIN wdpress.$table_name ON wdpress.$table_name.post_id = wdpress.wp_posts.ID\'*/
/* something like that ^ http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_join*/
/* $where = \' AND block_id=$id \'*/
}
可以从$postargs数组中检索blockID。编辑:所以解决方法其实很简单,我想我的大部分困惑都是因为我对cookie的工作原理产生了误解。由于它们显然可以在服务器端访问,我的回答是:
function set_block_filter($query){
if($query->is_category){
$query->set(\'meta_key\', \'block\');
$query->set(\'meta_value\', $_COOKIE[\'block\']);
return;
}
}
add_action(\'pre_get_posts\',\'set_issue_filter\');