让代码更简单

WordPress定时修改文章状态

重要:本文最后更新于2022-11-03 09:40:12,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

某位苦于被软文白嫖的站长的诉求,说是有广告主找他发软文,每次只发一个月,到期又不续费,搞得他每次都忘记下掉文章,为此希望能实现WordPress定时修改文章状态,自动将文章移动到回收站或者将文章性质由公开改为私密。

为了方便管理以及使用最少的代码量,本教程放弃使用WordPress的定时任务,改用Linux系统的定时任务,如果不会使用,可以使用可视化面板,如宝塔面板等实现定时任务。

首先在你的网站找个地方新建一个php文件,比如我在网站根目录建立了一个changepost.php,然后复制如下代码

复制
<?php 
//https://www.daimadog.org/8870.html
//自动修改文章状态
require( dirname(__FILE__).'/wp-load.php' );
$action = isset($_GET['action']) ?  $_GET['action'] : 'trash';
$postid = isset($_GET['postid']) ? (int) $_GET['postid'] : 0;
if($postid){
    if($action){
        if($action=='private'){
            $post_data = array(
                'ID' => $postid,
                'post_status' => 'private'
            );

           if( wp_update_post( $post_data )){
                print_r("成功变更为隐私文章");
           }else{
                print_r("隐私文章改变失败!");
           }
            
            exit();
        }
    }
    if( wp_trash_post( $postid)){
        print_r("成功移至回收站");
    }else{
        print_r("移至回收站失败!");
    }
     exit();
    
}else{
    print_r("必须输入postid");
}   
   
?>

注意:其中wp-load.php文件在根目录,如果保存的文件不在根目录,请在路径前加上../,代表本文件的上一级目录中的wp-load.php文件,以此类推,有多少层级就加多少个../,比如在themes文件夹中,那么你的代码应该是

复制
require( dirname(__FILE__).'/../../wp-load.php' );

其中action表示是将文章改为私密还是移动到回收站,postid是对哪篇文章。

然后在宝塔面板中新增定时任务,如下图

WordPress定时修改文章状态

url写你的文件地址,注意后面的参数。

WordPress定时修改文章状态

添加完成后可以手动执行下,看看效果。

这样的话就需要将此文件藏好,不然被别人访问一下就没了,哈哈哈。当然也可以加入参数进行验证,代码如下

复制
<?php 
//https://www.daimadog.org/8870.html
//自动修改文章状态
require( dirname(__FILE__).'/wp-load.php' );
$mkey = isset($_GET['mkey']) ?  $_GET['mkey'] : '';
$action = isset($_GET['action']) ?  $_GET['action'] : 'trash';
$postid = isset($_GET['postid']) ? (int) $_GET['postid'] : 0;
if($mkey!='你的密码'){
 print_r("密码不正确");
 exit();
}
if($postid){
    if($action){
        if($action=='private'){
            $post_data = array(
                'ID' => $postid,
                'post_status' => 'private'
            );

           if( wp_update_post( $post_data )){
                print_r("成功变更为隐私文章");
           }else{
                print_r("隐私文章改变失败!");
           }
            
            exit();
        }
    }
    if( wp_trash_post( $postid)){
        print_r("成功移至回收站");
    }else{
        print_r("移至回收站失败!");
    }
     exit();
    
}else{
    print_r("必须输入postid");
}   
   
?>

这样你的请求链接就需要增加一个验证参数mkey,如下

复制
域名/你的文件路径/文件名.php?mkey=你的密码&action=private&postid=100

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (1)

登录后评论
大佬牛皮
QQ咨询 邮件咨询 狗哥推荐