WordPress設置定時發布文章,且發布之前無404可以正常訪問(手動修改代碼,無需插件)

作者: 時間: 2012-08-24 分類: 技術文章 | 9 評論數 |

吾樂吧軟件站每天晚上都需要提前編輯好一大堆的文章,然后定時到第二天早上,每隔一段時間再逐個自動發布。但有些時候小牛需要外出,所以會提前編輯更多的帖子(主要是舊帖子),這樣一來,雖說是可以讓用戶每天都看到更新,也可以讓搜索引擎更好的進行收錄,但是有一個致命的問題:在帖子發布之前,用戶無法查看曾經/已經發布過的帖子!

于是,一個又一個的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”],?0,?4)==“/?s=”){$flag_url=true;}?}

if(!$flag_url?&&?$length_url>5)?{?if(substr($_SERVER[“REQUEST_URI”],?0,?6)==“/page/”?||?substr($_SERVER[“REQUEST_URI”],?0,?6)==“/?cat=”){$flag_url=true;}?}

if(!$flag_url?&&?$length_url>7)?{?if(substr($_SERVER[“REQUEST_URI”],?0,?8)==“/?paged=”){$flag_url=true;}?}

if(!$flag_url?&&?$length_url>9)?{?if(substr($_SERVER[“REQUEST_URI”],?0,?10)==“/wp-admin/”?||?substr($_SERVER[“REQUEST_URI”],?0,?10)==“/category/”){$flag_url=true;}?}?}

if($flag_url)?/*?edit?by?www.pllkp.tw?*/

{

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.pllkp.tw/page/2,設置之后,就可以讓他不在分頁里面顯示定時的文章,大家使用的時候,根據實際情況修改成自己需要的吧。

吾樂吧軟件站 2012年8月24日 原創文章,請注明出處 http://www.pllkp.tw/?p=11746 !!!

2017-12-14 更新

吾樂吧軟件站提醒大家:如果你們不會修改代碼,可以直接下載《WordPress Scheduled Post As Published 1.1 WP定時文章轉為已發布文章插件》,下載地址:http://www.pllkp.tw/?p=29416

本文采用 CC協議 發布,轉載請注明:轉載自 吾樂吧軟件站

本文鏈接地址:http://www.pllkp.tw/?p=11746

9 條評論 給“WordPress設置定時發布文章,且發布之前無404可以正常訪問(手動修改代碼,無需插件)”

  1. 不行啊,改了還是404,博主求解

  2. 如何讓搜索能搜到?貌似我的搜索搜不到啊!求大神指點!

  3. 這樣外出時小心電腦被雷到,嘻嘻。

  4. 這個還真沒試過,今天定時后試試看!

  5. 我找著個找了好久啊,終于找到了

發表評論

?
微軟MSDN資源免費訂閱,MSDN 我告訴你 越南美女捕鱼捕走光视频 广西快三是国家彩票么 福建时时中奖号码 新加坡六会彩开奖结果查询 体彩3d 北京pk直播手机版苹果 香港赛马会安卓版 北京快三助手 广西快三一定牛基本走势 pc蛋蛋在线计划软件 赛车pk彩票官网 外围广东快乐10分 大发快3一分钟开奖号码 公式规律 体育彩票篮球线上购买 130期平特肖 上海快3开奖走势图近50期