WordPress设置定时发布文章,且发布之前无404可以正常访问(手动修改代码,无需插件)...

本文介绍了一个在WordPress中实现定时发布文章的方法,同时确保在文章发布前用户可以正常访问已发布文章,避免出现404错误。通过手动修改代码,无需额外插件即可实现此功能。
 

WordPress设置定时发布文章,且发布之前无404可以正常访问(手动修改代码,无需插件) 

本文转自“爱比拼软件园”,原文链接:http://www.wuleba.com/?p=11746

 

爱比拼软件园每天晚上都需要提前编辑好一大堆的文章,然后定时到第二天早上,每隔一段时间再逐个自动发布。但有些时候小牛需要外出,所以会提前编辑更多的帖子(主要是旧帖子),这样一来,虽说是可以让用户每天都看到更新,也可以让搜索引擎更好的进行收录,但是有一个致命的问题:在帖子发布之前,用户无法查看曾经/已经发布过的帖子!

 

于是, 一个又一个的404错误接踵而来,不明真相的网友就会认为“这是一个LJ网站”了,什么都打不开,之前好不容易到论坛或者其他地方发布的帖子,也全都打不开链接了,不知道大家会有神马感觉~~反正小牛是受够了,所以昨天晚上,小牛一直在搜索相关的插件或者是解决方法,可惜无果啊。

 

于是当时便连夜开工,亲自动手了。由于对PHP不太熟悉,本机的环境也出了问题,所以导致无法调试代码,后来,只能用最愚蠢的办法了,一个个echo,然后缩小错误的范围,大概花了2个多小时,才找到问题所在。今天有空,所以又花了一点时间,把代码修改了一下,基本实现了预期的效果: WordPress设置定时发布文章,而且在文章发布之前无404错误,只要知道文章地址/链接,任何用户都可以正常访问(手动修改代码,无需插件),接下来进入正题:

 

1、找到 \wp-includes\post.php
2、打开post.php文件,找到如下代码段
     register_post_status(  ' future ', array( 
         ' label '       => _x(  ' Scheduled '' post ' ),
         ' protected '   =>  true,
         ' _builtin '    =>  true/*  internal use only.  */
         ' label_count ' => _n_noop( ' Scheduled <span class="count">(%s)</span> '' Scheduled <span class="count">(%s)</span> ' ),
    ) );
把它改成:
    $flag_url= false;
    $length_url=strlen($_SERVER[ " REQUEST_URI "]);
     if($_SERVER[ " REQUEST_URI "]== " / "){$flag_url= true;}  else {
     if(!$flag_url && $length_url> 3) {  if(substr($_SERVER[ " REQUEST_URI "],  04)== " /?s= "){$flag_url= true;} }
     if(!$flag_url && $length_url> 5) {  if(substr($_SERVER[ " REQUEST_URI "],  06)== " /page/ " || substr($_SERVER[ " REQUEST_URI "],  06)== " /?cat= "){$flag_url= true;} }
     if(!$flag_url && $length_url> 7) {  if(substr($_SERVER[ " REQUEST_URI "],  08)== " /?paged= "){$flag_url= true;} }
     if(!$flag_url && $length_url> 9) {  if(substr($_SERVER[ " REQUEST_URI "],  010)== " /wp-admin/ " || substr($_SERVER[ " REQUEST_URI "],  010)== " /category/ "){$flag_url= true;} } }
     if($flag_url)  /*  edit by www.ibipin.com  */
    {
        register_post_status(  ' future ', array(
             ' label '       => _x(  ' Scheduled '' post ' ),
             ' protected '   =>  true,
             ' _builtin '    =>  true/*  internal use only.  */
             ' label_count ' => _n_noop( ' Scheduled <span class="count">(%s)</span> '' Scheduled <span class="count">(%s)</span> ' ),
        ) );
    }
     else
    {
        register_post_status(  ' future ', array(
             ' label '       => _x(  ' Published '' post ' ),
             ' public '      =>  true,
             ' _builtin '    =>  true/*  internal use only.  */
             ' label_count ' => _n_noop(  ' Published <span class="count">(%s)</span> '' Published <span class="count">(%s)</span> ' ),
        ) );
    }

     // register_post_status( 'future', array(
    
//     'label'       => _x( 'Scheduled', 'post' ),
    
//     'protected'   => true,
    
//     '_builtin'    => true, /* internal use only. */
    
//     'label_count' => _n_noop('Scheduled <span class="count">(%s)</span>', 'Scheduled <span class="count">(%s)</span>' ),
    
// ) );  

3、改完之后,保存即可,但是请不要写中文哟,否则又会出现UTF8无BOM编码格式的问题了,建议使用Notepad++修改代码。记事本上不起啊~~

 

这上面的/?paged=、/page/是因为我使用了分页导航插件,这几个单词是首页的分页链接,例如: http://www.wuleba.com/page/2,设置之后,就可以让他不在分页里面显示定时的文章,大家使用的时候,根据实际情况修改成自己需要的吧。

 

爱比拼软件园 2012年8月24日 原创文章,请注明出处 http://www.wuleba.com/?p=11746 !!! 

posted on 2012-08-24 09:27 sabby 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/sabby/archive/2012/08/24/2653650.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值