非常小黑 发表于 2013-11-2 14:16:17

问个问题,wp里面如果一个category里面没有post...高手帮忙。

本帖最后由 非常小黑 于 2013-11-2 14:19 编辑

如果一个目录对应的没有post,那么就变成404页面,代码如下:<?php if ( have_posts() ) : ?>
......
<?php else : ?>
<?php get_template_part( 'content', 'none' ); ?>
<?php endif; ?>
但是我不想变成404页面,我想变成一个自定义的页面
我把<?php get_template_part('content','none');?>部分,无论改成什么,都没用,他依然还是显示404页面。

谁能告诉我怎么做?









uper 发表于 2013-11-2 18:20:36

我好像记得某些模板有自定义404页面的功能,但实在是记不清了。

luguokankan 发表于 2013-11-2 19:28:36

这个就奇怪了, 我用的是默认主题,
修改category.php的
将<?php get_template_part( 'content', 'none' ); ?>的none改成empty-category

content-empty-category.php正常加载了...

没法reproduce你的问题, 爱莫能助

非常小黑 发表于 2013-11-2 21:49:43

luguokankan 发表于 2013-11-2 19:28 static/image/common/back.gif
这个就奇怪了, 我用的是默认主题,
修改category.php的
将的none改成empty-category


版主大人,你是wordpress 几?
是2012主题吗?

非常小黑 发表于 2013-11-3 03:10:23

luguokankan 发表于 2013-11-2 19:28 static/image/common/back.gif
这个就奇怪了, 我用的是默认主题,
修改category.php的
将的none改成empty-category


对了。我是做了no-category处理,也就是把www.xxx.com/category/xxx.php改成www.xxx.com/xxx.php了

这种情况下,我无论怎么修改,他都是404页面。

luguokankan 发表于 2013-11-3 07:45:32

非常小黑 发表于 2013-11-3 03:10 static/image/common/back.gif
对了。我是做了no-category处理,也就是把www.xxx.com/category/xxx.php改成www.xxx.com/xxx.php了

这种 ...

你说的404应该不是content-none.php?

而是404.php吧?

再加上no-category, 我觉得应该是wp把www.xxx.com/xxx.php当成文章处理了.

用的是http://wordpress.org/plugins/wp-no-category-base/ 这个插件吗?

你给我说下插件,我才好帮你





非常小黑 发表于 2013-11-3 11:29:18

本帖最后由 非常小黑 于 2013-11-3 11:31 编辑

luguokankan 发表于 2013-11-3 07:45 static/image/common/back.gif
你说的404应该不是content-none.php?

而是404.php吧?

用的seo-ultimate这个插件
他里面有去除category这个功能。

是的,我无论如何修改elseif后面这段,他都显示404

然后我去class-wp.php里面修改function handle_404()
去除is_category()部分,也没用。

我怀疑,是不是wp把重写了category目录以后,就认为不是is_category了?



luguokankan 发表于 2013-11-3 12:33:30

本帖最后由 luguokankan 于 2013-11-3 12:36 编辑

非常小黑 发表于 2013-11-3 11:29 static/image/common/back.gif
用的seo-ultimate这个插件
他里面有去除category这个功能。


/seo-ultimate/modules/permalinks/permalinks.php

$terms = get_terms($tax_name);

改成

$terms = get_terms($tax_name,'hide_empty=0');

要是再出现404, 请到Permalink Settings那里按几下"Save Changes".

然后,你就可以修改主题的elseif了.


---
原因,我稍微解释下.

wp会将居于permalink setting而生成的rewrite rules保存在数据库.

当你访问一个链接的时候, wp会跟这些rewrite rules对比,找出匹配的页面返回给你.

你这个插件的问题是,他只生成post不为空的category的rewrite rules.

所以你访问没文章的category就404了......... 找不到匹配的页面.

---
由于这些rewrite rules是存在数据库里的, 你要是修改插件的话, 这些rewrite rules不会立即生效.

Permalink Settings的"Save Changes"按钮能刷新这些rewrite rules


非常小黑 发表于 2013-11-3 16:45:22

luguokankan 发表于 2013-11-3 12:33 static/image/common/back.gif
/seo-ultimate/modules/permalinks/permalinks.php

$terms = get_terms($tax_name);


果然如此啊。。。哥你太棒了。。。
佩服佩服。

页: [1]
查看完整版本: 问个问题,wp里面如果一个category里面没有post...高手帮忙。