J'essaie de modifier ma boucle pour enregistrer les données de publication par catégorie. J'ai trouvé sur ce site du code qui enregistrait les titres de l'article en fonction de leurs catégories et j'ai essayé de le modifier pour enregistrer le contenu de l'article. Cependant, alors que get_the_title
et get_the_category
fonctionnent, get_the_content
renvoie null.
Voici le code:
if ( false === ( $q = get_transient( 'category_list' ) ) ) {
$args = array(
'posts_per_page' => -1
);
$query = new WP_Query($args);
$q = array();
$body = array();
while ( $query->have_posts() ) {
$query->the_post();
$a = '<a href="'. get_permalink() .'">' . get_the_title() .'</a>';
$post_id = get_the_ID();
$post_id = $post->ID;
$body[$post_id] = array();
$body[$post_id]['title'] = '<a href="'. get_permalink() .'">' . get_the_title() .'</a>'; //works
$body[$post_id]['content'] = get_the_content('Read more');
$categories = get_the_category();
foreach ( $categories as $key=>$category ) {
$b = '<a href="' . get_category_link( $category ) . '">' . $category->name . '</a>';
}
$q[$b][] = $post_id; // Create an array with the category names and post titles
}
/* Restore original Post Data */
wp_reset_postdata();
set_transient( 'category_list', $q, 12 * HOUR_IN_SECONDS );
}
Edit: Voici comment j'utilise le tableau $body
:
foreach($q[$b] as $post) {
echo('<div class="teaser"><div class="teaser-title"><a href = "">' . $post . '</a></div><div class="teaser-text">'. $body[$post] . '</div><div class="teaser-footer"><p>pemsource.org</p></div></div>');
}
Edit2: J'ai ajouté le code complet. Quand je fais un dump var du corps, je reçois NULL et quand je fais un dump var de $ q je reçois
array(3) { ["Conundrums"]=> array(1) { [0]=> string(64) "new post" } ["Tips and Tricks"]=> array(1) { [0]=> string(80) "Tips and tricks" } ["Uncategorized"]=> array(1) { [0]=> string(78) "Tips and Tricks" } }
apparemment quelle que soit la façon dont je modifie la boucle. Je suis très confus. Toute aide est très appréciée
echo $post->post_content;
fera écho au contenu de votre message. Gardez à l'esprit cependant que c'est brut de la base de données (identique à get_the_content()
). Si vous souhaitez appliquer les mêmes filtres que the_content()
reçoit, suivez les instructions dans le codex :
<?php
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
?>