web-dev-qa-db-fra.com

Pourquoi interroger les publications gâchent mes pages?

Je travaille sur un thème en ce moment et j'ai mis en place un modèle de publication.

Ce modèle de publication est lié à certains types de publication personnalisés.

Lorsque je query_posts pour mon type de publication sur le modèle de publication proprement dit, le contenu disparaît pour une raison quelconque? Y a-t-il quelque chose qui me manque ici?

Merci Mark

Ma boucle est la suivante:

<?php
    $query = 'posts_per_page=10&post_type=articles';
    $queryObject = new WP_Query($query);

    // The Loop...
    if ($queryObject->have_posts()) {
        while ($queryObject->have_posts()) {
            $queryObject->the_post(); the_title(); the_content();
        }
    }
?>
1
Mdunbavan

utilisez wp_reset_query après votre boucle pour restaurer les données de publication globales de la boucle principale.

1
Milo

Par souci d'exhaustivité, bien que l'utilisation de wp_reset_query() ne soit pas nécessairement fausse, il s'agit d'une opération supplémentaire inutile, si elle est exécutée après une requête secondaire avec une nouvelle instance de la classe WP_Query . L'objet $wp_query n'est pas modifié, il n'a donc pas besoin d'être réinitialisé. Seul le $post global nécessite une réinitialisation. Par conséquent, wp_reset_postdata() serait suffisant dans ce cas.

Voir /wp-includes/query.php pour référence:

/**
* Destroy the previous query and set up a new query.
*
* This should be used after {@link query_posts()} and before another {@link
* query_posts()}. This will remove obscure bugs that occur when the previous
* wp_query object is not destroyed properly before another is set up.
*
* @since 2.3.0
* @uses $wp_query
*/
function wp_reset_query() {
    unset($GLOBALS['wp_query']);
    $GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
    wp_reset_postdata();
}

/**
* After looping through a separate query, this function restores
* the $post global to the current post in the main query
*
* @since 3.0.0
* @uses $wp_query
*/
function wp_reset_postdata() {
    global $wp_query;
    if ( !empty($wp_query->post) ) {
        $GLOBALS['post'] = $wp_query->post;
        setup_postdata($wp_query->post);
    }
}
0
Johannes Pille