在我自己的PHP文件中包含WP_QUERY吗?

时间:2017-03-03 作者:Jan

我想为自己写一本cronjob。但我需要访问WP_Query 以及删除帖子的权限等。

我现在的问题是,如何将WP_Query 我是否需要编辑或更改一些权限,以便使用cronjob删除或创建帖子?

2 个回复
最合适的回答,由SO网友:Fayaz 整理而成

在自定义PHP脚本中加载WordPress:WP_Query 正常工作。

例如,假设您有一个名为my-cron.php WordPress安装在web根目录中,如下所示:

public_html/
    index.php
    my-cron.php <--
    wp-load.php
    wp-settings.php
    ...
    wp-admin/
    wp-content/
    wp-includes/
在此设置中,如果要使用WP_Query 在里面my-cron.php 文件,您需要加载wp-load.php 文件所以在my-cron.php 文件您需要具有以下代码:

if ( ! defined(\'ABSPATH\') ) {
    /** Set up WordPress environment */
    require_once( dirname( __FILE__ ) . \'/wp-load.php\' );
}
访问WP\\u查询:

此时,您可以访问WP_Query, 所以你可以这样使用它:

// simply selecting posts with category name "wordpress"
$the_query = new WP_Query( array( \'category_name\' => \'wordpress\' ) );
if ( $the_query->have_posts() ) {
    echo \'<ul>\';
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        echo \'<li>\' . get_the_title() . \'</li>\';
    }
    echo \'</ul>\';
}
else {
    echo "No post found for category named wordpress";
}
删除帖子:但是,WP\\u Query没有删除功能。为此,您需要使用wp_delete_post() 功能或WPDB 班使用wp_delete_post() 建议使用,因为它将处理许多依赖项,但是,如果需要更多控制,则可以使用WPDB 类别或$wpdb 全局变量,但如果选择该路径,请小心。

例如,以下代码将删除ID为的帖子1:

$deleted = wp_delete_post( 1 );
if( $deleted === false ) {
    echo "Couldn\'t delete Post with ID=1";
}
else {
    echo "Deleted Post with ID=1";  
}
当然你可以合并WP_Query 具有wp_delete_post 查找和删除符合特定标准的帖子。

安装Cron:

编写完自定义PHP脚本后,您需要setup cron job 以HTTP请求的形式运行,如下所示:

5 * * * * wget -q -O - http://your-domain.com/my-cron.php
安全性:自访问后WP_Querywp_delete_post 作用doesn\'t require any authentication (或权限)默认情况下,您需要确保my-cron.php 无法公开访问。例如,可以在的开头添加以下内容my-cron.php 要访问的文件localhost 仅限:

$allowed_ip = \'127.0.0.1\';
if( $allowed_ip !== $_SERVER[\'REMOTE_ADDR\'] ) {
    exit( 0 );
}

SO网友:Kinna T

这是要在WordPress多站点环境中删除或创建站点吗?如果是这样,您可以访问WP\\u Query来处理站点,方法是将该函数放入网络激活的mu插件文件夹中的PHP文件中。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请