wordpress首页只显示某个分类的文章/rewrite实现

wordpress首页只显示指定的某个分类的文章,一个比较怪的需求,网上好像很少人有这样的需求。

这个需求是这样的,您目前正常访问的这个wordpress站点http://www.path8.net, 是一个部分原创,较多的转载的技术站点;其中原创文章主要在一个分类中。原创的东西当然更希望更多多阅读,也方便跟更多人分享知识交流经验。于是设想在首页显示原创文章,这样就能实在上述目标。

但网上查找相关的资料。有人说修改程序原代码,非常不赞成这种方法,修改源码,就失去了以后升级的便捷性。

突然想到,可能使用rewrite实现,就是把“对wordpress根目录直接的访问”重写到某个指定的分类上。

于是参考wordpress的.htaccess再补习一下rewrite规则,花了两个晚上,尝试了多次,终于实现了。

.htaccess如下(其实只加了标红的那一行,22是想在首页显示的分类编号):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /tn/
RewriteRule ^$ /tn/index.php?cat=22 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /tn/index.php [L]
</IfModule>
# END WordPress

不过,因为本站的wordpress不是在网站目录下安装,而是在/tn目录里,所以规则可能跟你的站点不一样。如果你的wprdpress在站点根目录下安装,则把其中/tn删除应该就可以了,我没有试。

存在问题:这个方法有一个比较重大的问题,就是分页,首页显示某个分类的文章,但下面的分页,则是全站文章的分页。

如谁有更好的实现方案,请分享交流。

--------------------------------------------

其实通过以下插件实现这样功能:Front Page Category, Front Page Excluded Categories, 但效果好像并不好,如有一篇文章同属两个分类,正好这两个分类一个是允许显示在首页,另一个不允许显示在首页上的,这样情况下,这篇文章就不能显示于首页。如有篇文章属于cat=22,同时又属于cat=28, 而只有22这个分类是允许显示的,这种情况下,我需要让它显示出来,但事实上,这两个插件都不会显示这篇文章的。

------------------------------------

2010-09-26补记

“wordpress首页只显示某个分类的文章” 该功能已经实现,在探索该功能的过程中,先后用了两个方案,这里是第一个rewrite方案,正如如上面“存在问题”说的,下面是一个以wordpress插件完美实现的解决方案,

wordpress首页只显示某个分类的文章/插件实现(完美实现,附插件源码)<推荐>

推荐使用这个插件方案。该插件是一个wordpress插件 Front Page Excluded Categories基本上稍做修改而成,在此感谢前人的工作。

wordpress访问记录里有这样的请求,不知是不是攻击型请求:/archives/+$(j(c))+

查看wordpress访问日志,是通过插件记录到mysql数据库里的,查阅比较方便(实现方法参看这里

无意中发现里面有这样的一个访问,请求页面url很怪

/archives/+$(j(c))+

该请求的user-agent是空的,httpreferer也是空的,在整个记录表里查询,还很多,一百多条,列部分于文后。

不知这样的请求是否是利用wordpress的某个漏洞而对wordpress的攻击,浏览器打开这样的地址,显示404页面,没其它异常情况 ,不知有没有哪位高手可以解答一下。

id     referer     url     time     ip     client     cookie
188834           /tn/archives/+$(j(c))+     2010-08-02 19:23:32     113.108.81.48
189859           /tn/archives/+$(j(c))+     2010-08-03 08:10:35     183.60.2.14
190683           /tn/archives/+$(j(c))+     2010-08-03 22:08:43     113.108.81.48
190835           /tn/archives/+$(j(c))+     2010-08-03 23:30:31     113.108.81.48
191457           /tn/archives/+$(j(c))+     2010-08-04 08:34:47     121.14.94.23
192659           /tn/archives/+$(j(c))+     2010-08-05 06:53:53     119.147.7.231
193517           /tn/archives/+$(j(c))+     2010-08-05 19:31:49     183.60.2.14
195123           /tn/archives/+$(j(c))+     2010-08-06 20:16:23     113.108.91.94
195185           /tn/archives/+$(j(c))+     2010-08-06 21:17:56     113.108.91.95
196435           /tn/archives/+$(j(c))+     2010-08-07 18:55:59     113.108.91.94
197866           /tn/archives/+$(j(c))+     2010-08-08 20:42:39     113.108.81.39
197893           /tn/archives/+$(j(c))+     2010-08-08 20:58:55     183.60.2.14
199258           /tn/archives/+$(j(c))+     2010-08-09 17:55:33     183.60.2.17
199272           /tn/archives/+$(j(c))+     2010-08-09 18:06:24     113.108.91.91
199659           /tn/archives/+$(j(c))+     2010-08-09 23:49:02     183.60.2.14
200895           /tn/archives/+$(j(c))+     2010-08-10 18:24:20     183.60.2.14
201412           /tn/archives/+$(j(c))+     2010-08-11 00:32:11     119.147.11.115
201878           /tn/archives/+$(j(c))+     2010-08-11 08:23:52     183.60.2.17
202709           /tn/archives/+$(j(c))+     2010-08-11 18:58:22     113.108.91.94
203309           /tn/archives/+$(j(c))+     2010-08-12 02:01:41     113.108.81.39
204605           /tn/archives/+$(j(c))+     2010-08-12 19:57:20     183.60.2.15
204655           /tn/archives/+$(j(c))+     2010-08-12 20:21:02     183.60.2.17
204667           /tn/archives/+$(j(c))+     2010-08-12 20:26:13     183.60.2.17
205119           /tn/archives/+$(j(c))+     2010-08-13 01:56:03     183.60.2.15
205352           /tn/archives/+$(j(c))+     2010-08-13 04:58:47     113.108.91.95
206956           /tn/archives/+$(j(c))+     2010-08-14 06:14:02     113.108.81.39
207067           /tn/archives/+$(j(c))+     2010-08-14 07:07:35     113.108.81.39
207676           /tn/archives/+$(j(c))+     2010-08-14 17:43:52     183.60.2.14
208101           /tn/archives/+$(j(c))+     2010-08-15 00:36:21     113.108.91.94
209681           /tn/archives/+$(j(c))+     2010-08-16 00:57:53     183.60.2.15

wordpress启用新主题zBench

wordpress启用新主题zBench,花了老长时间,总体比较满意。

下班后在公司找主题,因为以前用的INove使用的人太多,的确是款很经典的主题,wp升级到3.0后,就换用自带主题twentyten,然而实在不够美观,于是找新主题。在公司里,在一个测试用的wp后台里共看到52页的主题,一页一页翻到28页,找到了几个感觉比较好一点的,试过不好的直接就删掉了。只留少数几个,然后再行比较,明显相对较差的,也删除,基本也锁定在zBench。回来后,对几个主题再试用一下,还是这个好点,于是到这个正式的wp安装。要调侧边栏,GA配置等好几项,忙了老久,快一点,才算是到一段落,其它还有些功能,没有完整检测是否正常。不过大问题应该没有。现在已经01:03了,非常困,睡觉了。

wordpress资料搜集帖

有用的主题

10套 wordpress主题(Responsive, Customizr, Zerif Lite, Vantage, Hueman, Virtue, Spacious, Sydney, Graphene, Evolve)   http://www.icoder.top/blog/index.php/2016/08/16/10-of-the-most-popular-free-wordpress-themes/

2015免费主题之企业主题,22套(Responsive, Zerif Lite, ColorWay, Customizr, Sydney, onetone, Enigma, Spacious,
Virtue, Quest, Vantage, AccessPress Parallax, Attitude, Moesia, Catch Box, Responsive Brix, Alexandria, Oblique, Minamaze, Esteem, Catch Responsive, OnePirate)  http://www.moiblog.net/2015/wordpress-corporate-themes-2015/

多功能商业主题 Talon https://www.wpdaxue.com/wordpress-theme-talon.html

插件

[附注] 本文在旧文章《让wordpress首页只显示某个栏目》基础上修改,原文无甚价值,抺之,改为现文。 于 2017/12/09

 

wordpress 3.0.1终于出中文版了,支持并感激汉化工作者~~

刚才进入wordpress控制板,看到3.0.1中文版出来了,终于出来了,二话不说马上,autoupdate,使用美国主机,自动升级速度非常快,不像之前使用天朝网络里的服务器主机那样,十次升级,9次都要超时。重新载入页面后,控制板里的文字都成中文了,不像之前那样半中半英的了。

从3.0到现在,wordpress终于中文版了,可能是汉化工作者最近一直比较忙,没来得及,现在终于不负广大wp支持者的厚望出了中文版,感谢

wordpress 3.0.1开启多用户功能的具体操作方法步骤 (Warning: An existing WordPress network was detected./wp-config.php配置“above the line reading /* That’s all, stop editing! Happy blogging. */:”)

wordpress 3.0版本整合了多用户功能,但没有默认启用,需要手工配置。3.0刚出来时看控制板里没有启用多用户的选项,就没有查询启用方式。今天——其实是昨天了——比较无聊,想起这茬儿,于是查一个具体怎么启用。

在一个专用于测试的wordpress上操作,该wordpress已经升级到3.0.1,并安装有2.9.x的汉化包(3.0以来没有中文汉化出来,因此有一部分文字显示为英文)。没有启用“固定链接”(伪静态)。

google一下,很多篇相关文章,多数都是从这里转载的
http://www.bokezhuanqian.com/how-to-open-multi-user-in-wordpress-3-0/
讲很很清楚,照着操作。很显然,最主要的操作是第一步
wp-config.php文件,在末尾添加define(‘WP_ALLOW_MULTISITE’, ‘true’);
下面两步顺利进行,接下来的第4步
Network Title站点名称,点击过install后,出现一大篇英文大致如下

-------------------------------------------------------------start-------

Create a Network of WordPress Sites

1. Create a blogs.dir directory in /home/xxx/html/xxx/wp-content. This directory is used to stored uploaded media for your additional sites and must be writeable by the web server.
2. Add the following to your wp-config.php file in /home/xxx/html/xxx/ above the line reading /* That’s all, stop editing! Happy blogging. */:

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'www.path8.net' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

3. Add the following to your .htaccess file in /home/xxx/html/xxx/, replacing other WordPress rules:

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L]
RewriteRule . index.php [L]

--------------------------------------------------------------end------

没有仔细看,新建文件夹,添加配置信息到wp-config.php文件末尾,修改.htaccess文件,重新登录进入后台页面,没有看到“奇迹就要发生”,跟之前完全一样,所不同的就是"工具- network" (Tools - network) 里面有警告信息,信息如下

----------------------------------------------------------------start----

Warning: An existing WordPress network was detected.

Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables.

Enabling the Network

Complete the following steps to enable the features for creating a network of sites.

..........(还是上面的那一大段英文)

--------------------------------------------------------------end------

把改个发动过的文件恢复为最初的备份,重试,还是一样的“Warning”;甚至删掉整个数据库,重装wordpress,也照样有错。感觉倍受打击,照着攻略操作都不对。

于是回来检查操作过程,再跟网上“前辈”们讲的不一样仔仔细细对照一下,看到有点不太一样的提示,这样的句:

Add the following to your wp-config.php file in /home/xxx/html/xxx/ above the line reading /* That’s all, stop editing! Happy blogging. */:

意思就是要放到wp-config.php文件里“/* That’s all, stop editing! Happy blogging. */”这样一行上面,但找了N遍都没有找到这一句,翻译着看,也没有这样的一句,看来3.0.1在这方面改变了。只能抛开前辈们写的“攻略”,自己找解决方案。

提示消息是最有用的,在wp-config.php增加的配置语句,要放到某一行前面,above,放前面是不行的,但具体位置,找不到。看来如果在英文版里操作的话,应该很容易找到。或者死马当活马医了,wp-config.php文件并不长,靠前随便找个位置放进去试试看。

原本最前面是数据库配置,极端一点,放到数据库配置前面,如果不对再往后移。

修改上传,重新加载后台页面,哈,居然对了,在左侧栏里出现了“super admin”一栏!抓图留念。

------------------------------------------

下面是bokezhuanqian.com上的wordpress3.0开启多用户方法,备参考之用。

wordpress 3.0 怎么开启多用户?

刚刚兴冲冲的在后台寻找多用户的菜单,一直没找到,于是立马Google下,发现了方法,和大家分享一下!
PS:下列操作过程中请注意备份修改的文件。
1. 打开wp-config.php文件,在末尾添加define(‘WP_ALLOW_MULTISITE’, ‘true’);,然后上传至服务器,刷新后台界面,你会发现Tools菜单下多了个Networks选项。

2. 点击会出现如图右侧显示,在进行操作之前,你必须停用所有的插件。

3. 停用以后在点击NetWork菜单,就出现了如下的安装界面。点击可以查看大图

4. Network Title站点名称,Admin E-mail Address管理员邮箱,然后点击install。点击查看大图

这里需要在wp-content目录下创建一个名为blogs.dir的文件夹,用来存储其他子站上传的多媒体文件,同时必须将读写权限更改成0666 (-rw-rw-rw-)以确保该目录可写。

PS:再提醒一次,注意备份wp-config.php和.htaccess文件。
拷贝define( ‘MULTISITE’, true );这部分到你的wp-config.php文件中
define( ‘AUTH_SALT’, ‘+X-||odG>*b`%=D4>|)uuDvz4A^V+bsj$8B2~FV|(i%U Ei`Yn8k4&&v0p{)4.w.’ );
这部分是你的站点密钥,最好也拷贝到wp-config.php文件中,位置放在末尾就ok了。

5. 最后拷贝RewriteRule部分到你的.htaccess文件中。

OVER,现在退出帐户,重新登录一下吧~哈哈哈~奇迹就要发生!!!

发现Google已经收录。2分钟之前。

--------------------------------------------------------------
可以任意转载, 转载时请务必以超链接形式标明文章原始出处及此声明
本文地址:http://www.bokezhuanqian.com/how-to-open-multi-user-in-wordpress-3-0/

搞了老半天,凌晨1:22分,算是把数据导到wp里了(百度空间搬到wordpress)

百度空间数据导入wordpress 2.9.1, 初步完成。 使用php数据采集器,hmjcj_1.3 采集数据,主要包括文章标题,分类,时间等。很简单的采集工具,称不上多好,但在这里够用了。 采集得到的数据整理,distinct得到所有文章分类,导入一个新表里,原始文章表里,加分类id号字段,update;时间整理出来。 本地新安装wp,把分类导入wp_terms,文章导入 wp_posts,在wp_term_taxonomy表,为分条wp_terms创建一条记录,直接使term_id与term_taxonomy_id相等,以免导文章分类号对应时麻烦。 导入文章与分类关系数据wp_term_relationships 几条主要语句: insert into `wp_posts` (post_author, post_date, post_date_gmt,  post_content, post_title, post_status , comment_status, ping_status, post_name, post_modified, post_modified_gmt , post_parent, post_type, comment_count, post_excerpt, to_ping, pinged, post_content_filtered) select 1, `time`, `time`, `body`, `title`, 'publish', 'open', 'open', `title`, `time`, `time`, 0, 'post', 0, '', '', '', '' from `fei5` insert into `wp_term_relationships`(term_taxonomy_id, object_id) SELECT `fei5`.cate_id, wp_posts.`id` FROM `fei5` inner join wp_posts on wp_posts.post_title=fei5.title SELECT wp_posts.`id`, wp_posts.post_title, `fei5`.cate_id, `fei5`.cate FROM `fei5` inner join wp_posts on wp_posts.post_title=fei5.title