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

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

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

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

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

1、找到 \wp-includes\post.php
2、打开post.php文件,找到如下代码段

 PHP Code By wuleba.com
1
2
3
4
5
6
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 > ’ ),

) );

把它改成:

 PHP Code By wuleba.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$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.wuleba.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/是因为我使用了分页导航插件,这几个单词是首页的分页链接,例如:https://www.wuleba.com/page/2,设置之后,就可以让他不在分页里面显示定时的文章,大家使用的时候,根据实际情况修改成自己需要的吧。

吾乐吧软件站 2012年8月24日 原创文章,请注明出处 https://www.wuleba.com/?p=11746 !!!

2017-12-14 更新

吾乐吧软件站提醒大家:如果你们不会修改代码,可以直接下载《WordPress Scheduled Post As Published 1.1 WP定时文章转为已发布文章插件》,下载地址:https://www.wuleba.com/?p=29416

版权声明:

小编:吾乐吧软件站

链接:https://www.wuleba.com/6660.html

来源:吾乐吧软件站

本资源仅供个人学习,禁止用于商业用途。下载后请于24小时内删除,并支持正版或原作者。因使用本资源导致的任何法律纠纷或损失,由使用者自行承担。

THE END
上一篇 SplitIt 5.3.4382 便携版(视频、音频快速分割合并转换工具)
下一篇 Aero Glass Mp3 Player 1.95 绿色便携版(Aero风格透明音乐播放器)
相关内容
转发
9
点赞
分享
全部转发 0 只看作者
按时间倒序 按时间正序

全部评论 9 只看作者
按时间倒序 按时间正序
蔡峰
感谢,可用
2013年11月30日 22:33 0 回复
LeaveBugsAway
不行啊,改了还是404,博主求解
2013年10月20日 21:06 0 回复
依旧不中
, 更改过后还是404
2013年9月25日 16:27 0 回复
咆哮的企鹅
如何让搜索能搜到?貌似我的搜索搜不到啊!求大神指点!
2013年5月23日 17:34 0 回复
咆哮的企鹅 回复 @咆哮的企鹅
原来是代码没搞懂!把/?s= 这行注释掉就可以了!还是要谢谢大神!
2013年5月23日 17:38 0 回复
DickMoore Lv.1
这样外出时小心电脑被雷到,嘻嘻。
2013年1月19日 11:19 0 回复
垃圾站
这个还真没试过,今天定时后试试看!
2012年11月15日 18:30 0 回复
现在我都是用这招定时,有事外出的时候,就会提前弄好几天的文章,然后让他定时更新,而且木有404,嘻嘻
2012年11月15日 19:15 0 回复
混沌天使
我找着个找了好久啊,终于找到了
2012年8月24日 09:36 0 回复
赞赏支持
微信收款码
微信扫一扫
支付宝收款码
支付宝扫一扫
投诉内容
0/200
上传图片(最多3张,单张不超过2MB)
生成分享图片
正在生成预览...