web-dev-qa-db-fra.com

is_page () ne fonctionne pas depuis un plugin

Dans mon plugin je fais:

function get_user_strains()
{
    $userID = get_current_user_id();

    $args = array(
        'post_type'     => 'strain',
        'orderby'       => 'post_date',
        'order'            => 'DESC',
        'post_status'      => 'publish',
    );

    $strains = get_posts($args);

    global $userStrains;
    $userStrains = array();

    foreach($strains as $i)
    {
        $meta = get_post_meta($i->ID);
        //var_dump($meta);
        if($i->post_author == $userID)
        {
            $i->type = $meta['type'][0];
            $i->rating = $meta['rating'][0];
            //var_dump($i);
            array_Push($userStrains, $i);
        }
    }

    //var_dump($userStrains);
    $userStrainsJson = json_encode($userStrains);

    //var_dump($userStrains);

    wp_reset_query();
}
add_action('init','get_user_strains');

function edit_strain()
{
    if(is_page()) echo "IS A PAGE";
    $id = isset($_GET['id']) ? $_GET['id'] : 'no id set';

    global $editStrainData;
    $editStrainData = get_post($id);
    global $editStrainMeta;
    $editStrainMeta = get_post_meta($id);

    wp_reset_query();
}
add_action('init','edit_strain');

J'essaie de déterminer si un modèle personnalisé que j'ai créé est une page. Utiliser ou ne pas utiliser "The Loop" dans ma page de modèle ne fait aucune différence.

Dans edit_strain()is_page() renvoie false. Est-ce que cela a quelque chose à voir avec moi en utilisant get_posts dans get_user_strains()? J'ai entendu dire que je devrais utiliser WP_Query() mais je ne sais pas vraiment comment convertir cette get_posts() en WP_Query().

Serait-ce le problème?
J'ai effectué une recherche dans Stack Exchange et je n'ai rien trouvé qui résolve mon problème.

5
Timothy Owen

L'action init arrive trop tôt pour savoir si la page en cours doit afficher une page. Vous devez attendre au moins jusqu'à template_redirect. Mais si vous voulez imprimer quelque chose sur la page, utilisez the_content.

5
fuxia