如何检测/Category和/Tag基页?

时间:2012-05-28 作者:Force Flow

在我正在构建的主题中,我有这样一个结构来检测某个页面的类型。但是,如果我访问mydomain。com/类别/或mydomain。com/tag/,我只得到have\\u posts()的else语句中的“nothing found”消息。有没有办法检测这些链接何时被访问并显示最终else语句中没有的内容?

if(is_category()):
   echo \'<h1>title here</h1>\';
elseif(is_tag()):
   echo \'<h1>title here</h1>\';
elseif(is_author():
   echo \'<h1>title here</h1>\';
elseif(is_archive()):
   echo \'<h1>title here</h1>\';
endif;

if(have_posts()):
     //the loop
else:
    echo \'<h1>Nothing Found</h1>\';
endif;

2 个回复
最合适的回答,由SO网友:Force Flow 整理而成

如果我把它放在wordpress规则的htaccess块之上,我就能够将标签和类别基页重定向回主页。

RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^category/?$ "http://mydomain.com" [R=301,L]
RewriteRule ^tag/?$ "http://mydomain.com" [R=301,L]

SO网友:Liam Bailey

没有好的方法可以做到这一点,但可以通过某种方式做到。当您访问/category/it时,它就像您正在访问一个名为category的页面。您可以这样查找:

global $wp_query;
if ($wp_query->query_vars[\'pagename\'] == "category")
{
  // This is base category
}
else if ($wp_query->query_vars[\'pagename\'] == "tag")
{
// this is tag base
}
但这永远不应该做到。它基本上是一个垃圾查询;一个404,将发送一个404响应代码,因此您需要查看发送另一个响应代码。因此(如果您决定使用它),这段代码应该放在标题中。php,尽管它在404中可能会很高。php(在任何输出之前)。

结束

相关推荐

如何从小部件管理面板内的Get_Categories()选择列表中排除类别

我有一个小部件,我需要添加一个类别选择列表。最终用户应该能够选择一个类别,我需要用小部件保存类别ID。我遇到了一个绊脚石,因为我无法使排除数组正常工作。被排除在外的猫仍会出现在下拉列表中。我做错了什么?function form( $instance ) { $instance = wp_parse_args( (array) $instance, array( \'title\' => \'\', \'text\' => \'\', \'hide_title\' =>