EEfaq论坛-赚客自留地

 找回密码
 免费注册
查看: 1558|回复: 8

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

[复制链接]
发表于 2013-11-2 14:16:17 | 显示全部楼层 |阅读模式
本帖最后由 非常小黑 于 2013-11-2 14:19 编辑

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

谁能告诉我怎么做?









发表于 2013-11-2 18:20:36 | 显示全部楼层
我好像记得某些模板有自定义404页面的功能,但实在是记不清了。
回复 支持 反对

使用道具 举报

发表于 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 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-3 03:10:23 | 显示全部楼层
luguokankan 发表于 2013-11-2 19:28
这个就奇怪了, 我用的是默认主题,
修改category.php的
将的none改成empty-category

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

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

回复 支持 反对

使用道具 举报

发表于 2013-11-3 07:45:32 | 显示全部楼层
非常小黑 发表于 2013-11-3 03:10
对了。我是做了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
你说的404应该不是content-none.php?

而是404.php吧?

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

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

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

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



回复 支持 反对

使用道具 举报

发表于 2013-11-3 12:33:30 | 显示全部楼层
本帖最后由 luguokankan 于 2013-11-3 12:36 编辑
非常小黑 发表于 2013-11-3 11:29
用的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


评分

参与人数 1e币 +4 收起 理由
非常小黑 + 4 楼主好牛

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-3 16:45:22 | 显示全部楼层
luguokankan 发表于 2013-11-3 12:33
/seo-ultimate/modules/permalinks/permalinks.php

$terms = get_terms($tax_name);

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

点评

搞技术的太苦逼了.. 大哥有啥好路子,带下小弟哦  发表于 2013-11-3 19:36
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|联系我们|Archiver|手机版|小黑屋|EEfaq论坛

GMT+8, 2024-11-21 20:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表