web-dev-qa-db-fra.com

Erreur fatale: la classe 'ms\WP_Query' est introuvable à l'initialisation du plug-in

Comment puis-je appeler WP_Query lors de l'initialisation du plug-in et enregistrer les données des publications dans $ data?

Je reçois Fatal error: Class 'ms\WP_Query' not found, peu importe le hook sur lequel j'appelle la méthode. Même si je l’appelle comme ceci add_action('shutdown', array($this, 'get_data')); ça ne marche pas (shutdown hook est censé être le dernier à courir) ou si j’appelle avec un shortcode add_shortcode( 'get_data', array($get_data, 'get_data') );

<?php
/*
Plugin Name: Test
Description: Test
Version: 0.1
*/

namespace ms;

if (!defined('ABSPATH')) exit;

class get_data {

    private $data = array();    

    public function __construct(){
        // add_action('init', array($this, 'get_data'));
    }

    public function get_data() {

        $args = array(
            'post_type' => 'post',
            'posts_per_page' => 10
            );

        $query = new WP_Query($args);

        if ( $query->have_posts() ) :
            while ( $query->have_posts() ) : $query->the_post();

                $this->data[] = array(
                    'title' => get_the_title()
                );

        endwhile;
        wp_reset_postdata();
        endif;

        var_dump($this->data);

    }

$get_data = new get_data();
add_shortcode( 'get_data', array($get_data, 'get_data') );
2
Ivan Topić

Comme vous utilisez un espace de noms dans cette classe, vous devez ajouter un \ devant l'appel WP_Query pour indiquer à PHP qu'il se trouve dans l'espace de noms global et non dans l'espace de noms de cette classe.

Essayez ceci: $query = new \WP_Query($args);

12
Welcher