如何拦截所有WordPress查询并限制到类别?

时间:2010-02-27 05:26:18

标签: hook wordpress-plugin categories restrict

在WordPress插件编码中,如果我有两个类别(汽车和园艺)并且我想总是从所有查询中排除园艺,那么我需要做什么拦截(钩子或其他技巧)呢?我需要始终排除园艺,无论是通过搜索,标记云小部件,评论小部件,日历小部件,还是网站的任何其他部分。

我问的原因是我的客户需要通过域名对单个主题作出不同的反应。如果用户键入gardening.com并将其映射到此博客,那么他想限制为仅显示gardening.com内容。如果用户键入cars.com并将其映射到同一个博客,那么他希望限制为仅显示cars.com内容。

再次说,我的问题在于想要使用插件钩子点击WordPress的一个中心位置以始终确保查询仅限于给定类别。这样,即使添加了一个不是WordPress默认的新插件,它也会受到类别的限制。

我已经想出如何在主题的header.php中放置此代码,以使链接正常运行,具体取决于某人输入的URL:

$sURL = 'http://' . $_SERVER['SERVER_NAME'];
update_option('siteurl',$sURL);
update_option('home',$sURL);
unset($sURL);

1 个答案:

答案 0 :(得分:0)

我发现我必须创建一个home.php,它是index.php的副本,但是在has_posts()调用之前调用query_posts('category_name ='。$ _SERVER ['SERVER_NAME'])调用。在index.php上,我单独留下它并没有添加query_posts()。然后,我不得不制作一个archive.php,它是Kubrick的archive.php的副本,然后进行编辑,以便根据选择的内容改变query_posts(),例如添加“& tag =”, “& year =”等。同样,必须添加一个search.php(借用Kubrick),它也按类别限制。这是一个很大的帮助:

http://codex.wordpress.org/Template_Tags/query_posts

我唯一还没想到的是如何将动态侧边栏中的小部件限制为一个类别。我正在将它变成StackOverflow中的separate request