国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Page virtuelle WordPress - "Essayer d'obtenir la propriété 'post_type' de non-objet"
P粉265724930
P粉265724930 2024-01-16 12:01:22
0
1
646

Je construis un plugin WordPress qui utilise des pages factices pour afficher les données récupérées à partir d'une API.

La configuration est relativement simple. J'ai une règle de réécriture pour les URL sur lesquelles le plugin veut travailler, et lorsque j'appuie sur des query_vars spécifiques, je lance une page factice.

public function __construct()
{

    require_once plugin_dir_path(__FILE__).'vendor/autoload.php';

    add_action('init', [$this, 'rewrite_rule'], 1);

    // add query vars
    add_action('query_vars', [$this, 'add_query_vars_filter'], 1);

    // virtual page init
    add_filter('the_posts', [$this, 'virtual_page'], 1);

}
public function virtual_page($posts)
{

    global $wp, $wp_query;

    if (!empty(get_query_var('plugin'))) {
        $plugin = get_query_var('plugin');
    }

    if (!empty($plugin)) {

        $post = new stdClass();
        $post->post_author = 1;
        $post->post_name = 'lorem ipsum';
        $post->guid = get_bloginfo('wpurl').'/';

        $post->post_title = 'title';
        $post->post_content = 'content';

        $post->ID = -999;
        $post->post_type = 'page';
        $post->post_status = 'static';
        $post->comment_status = 'closed';
        $post->ping_status = 'open';
        $post->comment_count = 0;
        $post->post_date = current_time('mysql');
        $post->post_date_gmt = current_time('mysql', 1);
        $posts = NULL;
        $posts[] = $post;

        $wp_query->is_page = true;
        $wp_query->is_single = false;

        $wp_query->is_singular = true;
        $wp_query->is_home = false;
        $wp_query->is_archive = false;
        $wp_query->is_category = false;

        unset($wp_query->query["error"]);
        $wp_query->query_vars["error"] = "";
        $wp_query->is_404 = false;

        remove_filter('the_content', 'wpautop');
        remove_filter('the_excerpt', 'wpautop');

        return $posts;
    }
}

Ce code fait ce qu'il est censé faire, c'est-à-dire afficher une page factice avec le contenu dont j'ai besoin, mais je re?ois un avertissement en PHP 8.0?:

"Attempt to read property "post_type" on null"

Je pense que l'ordre d'exécution ici est erroné car je re?ois $post et $wp_query vides dans xdebug. Je suppose que la fonction de page virtuelle est exécutée trop t?t.

J'ai essayé de déboguer ce problème pendant longtemps mais malheureusement je manquais de connaissances backend/WordPress.

Si quelqu'un peut m'aider, je lui en serais encore plus reconnaissant.

P粉265724930
P粉265724930

répondre à tous(1)
P粉002023326

Si vous essayez d'utiliser des pages virtuelles dans WP 6.1, vous n'aurez plus d'identifiant de publication. Cette ligne provoque sa rupture.

$post->ID = -999;

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal