zoukankan      html  css  js  c++  java
  • 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 !!! 


    吾乐吧软件站——打造一个高品质的绿色软件博客!http://www.wuleba.com。有大量绿色、实用软件下载及IT新闻资讯分享。吾乐吧,你记住了吗?

  • 相关阅读:
    校园网络安全CTF 第一题 和 你真了解我吗?
    href="#" 链接到当前页面
    Redis的Set无序集合命令
    Redis的List链表类型命令
    Redis的String、Hash类型命令
    redis2.8.xx安装配置
    ZendFramework安装配置
    复选框的全选、反选
    列表中被点击的行加亮背景色
    SQL中的替换函数replace()使用
  • 原文地址:https://www.cnblogs.com/sabby/p/2653650.html
Copyright © 2011-2022 走看看