Je gère un site wordpress et ai créé une partie de modèle que je colle habituellement sous le contenu.
<div class="posts-group">
<h2>Featured store products</h2>
<?php $catquery = new WP_Query( 'post_type=product&posts_per_page=4&orderby=Rand' );
while($catquery->have_posts()) : $catquery->the_post();
?>
<a href="<?php echo get_post_meta($post->ID,'PRODUCT-url', true);?>">
<article class="post home-post homeproduct">
<div class="post-thumbnail-img">
<?php the_post_thumbnail('small-thumbnail'); ?>
</div>
<h2><?php the_title(); ?></h2>
<p></p>
</article>
</a>
<?php endwhile; ?>
</div>
Maintenant, j'essaie de mettre ceci entre le contenu, alors j'ai pensé à utiliser un shortcode
function get_products($atts) {
get_template_part('block-products-inline');
}
add_shortcode('products', 'get_products');
Maintenant, chaque fois que je poste des [produits], je pense que les produits y vont. Cependant, lorsque j'essaie le code ci-dessus, les produits template_part vont jusqu'au sommet de la page, juste en dessous du titre et juste avant le contenu.
Mais lorsque je modifie le shortcode pour simplement renvoyer du texte, celui-ci apparait au milieu du contenu.
Est-ce que quelqu'un comprend ce qui se passe? Parce que je ne ..
Essaye ça
function get_products($atts) {
ob_start();
get_template_part('block-products-inline');
return ob_get_clean();
}
add_shortcode('products', 'get_products');
Petite explication
php affiche simplement votre contenu tout de suite lorsque vous voyez sa déclaration print. Ce que nous faisons ici est que nous conservons toutes les sorties dans une mémoire tampon et que nous ne les imprimons pas tant que tout n’est pas terminé.
nous renvoyons ensuite les résultats entiers finaux (sorties). Cela donne le contrôle de notre côté quand et où imprimer des sorties.
Vous pouvez même l'affecter à dans variable
et les renvoyer si nécessaire
ob_start();
get_template_part('block-products-inline');
$output = ob_get_clean();
//now you can return the output whenever you want with $output