webentwicklung-frage-antwort-db.com.de

is_page () funktioniert nicht innerhalb eines Plugins

In meinem Plugin mache ich:

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');

Ich versuche festzustellen, ob eine von mir erstellte benutzerdefinierte Vorlage eine Seite ist. Das Verwenden oder Nicht-Verwenden von "The Loop" in meiner Vorlagenseite macht keinen Unterschied.

In edit_strain() gibt is_page() false zurück. Hat es etwas mit der Verwendung von get_posts in get_user_strains() zu tun? Ich habe gehört, ich sollte WP_Query() verwenden, weiß aber nicht, wie ich diese get_posts() in eine WP_Query() umwandeln soll.

Wäre das das Problem?
Ich habe Stack Exchange durchsucht und nichts gefunden, was mein Problem gelöst hätte.

5
Timothy Owen

Die Aktion init wird zu früh ausgeführt, um zu wissen, ob auf der aktuellen Seite eine Seite angezeigt werden soll. Sie müssen mindestens bis zum template_redirect warten. Wenn Sie jedoch etwas auf die Seite drucken möchten, verwenden Sie the_content.

5
fuxia