как использовать функции WordPress в пользовательском файле PHP - PullRequest
0 голосов
/ 07 сентября 2018

я использую функцию have_posts () в пользовательском файле php, который включает в себя wp-load.php. но у меня есть эта ошибка:

Неустранимая ошибка: вызов функции-члена have_posts () для NULL в C: \ xampp \ htdocs \ khanehkheshti \ wp-includes \ query.php в строке 767

php файл:

require_once( wp_normalize_path(ABSPATH).'wp-load.php');

public static function home() {


    $query = new WP_Query(array(category_name => "img_news", 'posts_per_page' => '3' ));
    $home = array();
    $in = array();


    while ( $query->have_posts() ) {
        $query->the_post();

        $home['title']  = get_the_title();
        $home['content']  = get_the_content();
        $home['img']  = the_post_thumbnail( array( 300, 260 ) );
        $in[] = $home;
    }

    echo JSON_encode($in);


    return $in;



}

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Попробуйте заменить wp-load.php на wp-blog-header.php. Вот пример кода:

define('WP_USE_THEMES', false);
require_once('PATHHERE/wp-blog-header.php'); 

public static function home() {
    $query = new WP_Query(array(category_name => "img_news", 'posts_per_page' => '3' ));
    $home = array();
    $in = array();

    while ( $query->have_posts() ) {
        $query->the_post();

        $home['title']  = get_the_title();
        $home['content']  = get_the_content();
        $home['img']  = the_post_thumbnail( array( 300, 260 ) );
        $in[] = $home;
    }

    echo JSON_encode($in);

    return $in;

} 
0 голосов
/ 07 сентября 2018

Вы должны инициализировать WordPress в своем собственном PHP-файле. Вы можете использовать следующий код для его инициализации.

/**
 *  WordPress initializing
 */
function find_wordpress_base_path()
{
    $dir = dirname(__FILE__);

    do
    {
        if(file_exists($dir.'/wp-config.php')) return $dir;
    }
    while($dir = realpath($dir.'/..'));

    return NULL;
}

define('BASE_PATH', find_wordpress_base_path().'/');
define('WP_USE_THEMES', false);

global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;
require(BASE_PATH.'wp-load.php');

// Now you have access to WordPress functions here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...