Je ne sais pas pourquoi mais j'ai utilisé get_posts()
pour interroger certaines données. Ensuite, j'ai utilisé setup_postdata()
... Je pense que c'est utilisé pour pouvoir utiliser des fonctions comme the_permalink()
etc. avec les nouvelles données de publication?
<?php foreach ($childPosts as $cp) : setup_postdata($cp); ?>
<article <?php post_class() ?> id="post-<?php the_ID(); ?>">
<h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
<?php if (has_post_thumbnail()) : ?>
<a href="<?php the_permalink() ?>"><?php the_post_thumbnail(($hasOutputNotFeaturedDiv) ? 'thumb-small' : null) ?></a>
<?php endif; ?>
<?php the_excerpt(); ?>
<p class="more"><a href="<?php the_permalink() ?>">Read more ...</a></p>
<?php include (TEMPLATEPATH . '/inc/meta.php' ); ?>
</article>
<?php endforeach; ?>
mais il semble que seul the_excerpt
contienne la nouvelle valeur de données de publication, pourquoi? Je trouve que si j'utilise echo get_the_permalink($cp)
cela fonctionne bien. Mais je pense que la version courte sera meilleure
Je peux me tromper, mais d'après ce que je vois, "setup_postdata ()" devrait être utilisé lors d'une requête de sélection personnalisée (et pas seulement de query_posts): http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query
De même, si vous souhaitez utiliser des balises telles que "the_title ()" et "the_permalink ()" avec cette requête de sélection personnalisée ... vous devrez utiliser le nom de variable $ post (pas une autre nom de la variable) dans setup_postdata () - AUSSI - vous devriez appeler global $ post avant votre boucle "foreach" ...
Donc, fondamentalement, suivez cet exemple dans ce lien codex. Et ne changez pas le nom de la variable $ post - sinon, il sera cassé.
HTH
Remplace le
foreach ( $childPosts as $cp ) : setup_postdata( $cp );
avec
foreach ( $childPosts as $post ) : setup_postdata( $post );
Donc, vous devez utiliser la variable $post
exacte avec la setup_postdata()
.
Selon l'endroit où vous utilisez setup_postdata () (si ce n'est pas dans la boucle principale ou dans un widget de fonction/barre latérale, par exemple), vous devrez peut-être également déclarer -
global $post;
global post;
ne fonctionne pas avec setup_postdata($post);
si vous souhaitez utiliser la famille de commandes the_title()
, etc.
C'est dans https://codex.wordpress.org/Function_Reference/setup_postdata
Utilisez plutôt
// global $post; setup_postdata($post_object); //don't do this!
setup_postdata( $GLOBALS['post'] =& $post_object );
... assurez-vous également que votre $post_object
est un objet WP_Post valide.
Lorsque vous interrogez des publications, utilisez simplement la boucle normale avec un ensemble d’arguments transmis. Puis réinitialisez la requête à la fin.
<?php
// makes query respect paging rules
$paged = get_query_var('paged');
// defining the arguements for the custom loop
$variablenameQuery = array(
'post_type' => 'seating-charts',
'post_status' => 'publish',
'cust_tax_name' => 'custom-tax-term',
'posts_per_page' => -1, // neg 1 means all posts
'orderby' => 'date',
'order' => 'ASC',
'paged' => $paged,
); // end query
// pass result into query_posts to get result
query_posts($variablenameQuery);
?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php // Individual Post Styling ?>
<?php endwhile; ?>
<?php // paged navigation - next post, previous post... ?>
<?php else : ?>
<h3>Ooops looks like there was an issue. Please <a href="<?php echo get_option('home'); ?>/contact" title="Contact Us">get in touch</a> with us and we'll get the problem fixed.</h3>
<?php endif; ?>
<!-- resets the WordPress Query -->
<?php wp_reset_query(); ?>