La fonction ci-dessous est renvoyée par ordre alphabétique et non, comme souhaité, par ordre arbitraire.
Est-il possible de ne pas retourner en ordre alphabétique mais dans l'ordre exact indiqué dans le tableau?
add_filter('the_content', 'my_function');
function my_function($content) {
if ( is_single() && in_category( '5' ) ) {
the_post_thumbnail('thumbnail', array('class' => 'top-post-img' ));
global $post;
$term_list=wp_get_post_terms($post->ID,array('school','article','teacher'),array( "fields" => "names"));
?>
<div style="margin:45px;">
School: <strong><?php print_r($term_list[0]); ?></strong><br />
Article: <strong><?php print_r($term_list[1]); ?></strong><br />
Teacher: <strong><?php print_r($term_list[2]); ?></strong>
</div>
<?php
return $content;
} else {
return $content;
}
}
J'ai essayé en ajoutant:
array ('orderby' => 'post__in'), array ('post__in' => '24', '10', '3', '46' )
Les numéros sont les identifiants de taxonomie, mais ils n'en modifient aucun, ils ne génèrent pas non plus d'erreur.
Pour trouver les identifiants de taxonomie que j'ai utilisés, ou s'agit-il d'un mauvais code?
$terms = get_the_terms( $post->ID , 'taxonomy-name' );
if($terms) {
foreach( $terms as $term ) {
echo $term->term_id.'<br />';
}
}
Devrais-je utiliser list_filter
quelque part ou un peu plus bas dans le code après le print_r
?
Ajoutée
var_dump($term_list);
pour voir si la sortie en montrerait un autre, mais non, c'était le même ordre alphabétique.
Je suis presque sûr d’oublier certains mais quoi, et où. Ou est-ce que mon approche est totalement fausse?
J'adorerais trouver une solution.
Merci d’avance pour votre temps et vos efforts.
add_filter('the_content','my_function');
function my_function($content){
the_post_thumbnail('thumbnail', array('class' => 'top-post-img' ));
if (is_single() && in_category('5')){
global $post;
$term_list = wp_get_post_terms ($post->ID,'school',array('fields'=>'names'));
?>
<div id="some_class">
<span>School:<strong><?php print_r($term_list[0]); ?></strong></span>
<?php
if (is_single() && in_category('5')){
$term_list = wp_get_post_terms ($post->ID,'article',array('fields' =>'names'));
?>
<span>Article:<strong><?php print_r($term_list[0]); ?></strong></span>
<?php
if (is_single() && in_category('5')){
$term_list = wp_get_post_terms ($post->ID,'teacher',array('fields'=>'names'));
?>
<span>Teacher:<strong><?php print_r($term_list[0]); ?></strong></span>
</div>
<?php
return $content;
}
}
} else {
return $content;
}
}
Grâce aux suggestions de Rarst , ce code fonctionne à merveille.
Comme vous pouvez le voir, il montre le Featured Image
qui appartient à ce post,
et la sortie est renvoyée dans l'ordre exact souhaité dans le code.
Il utilise également des CSS pour styler (dans le style.css) afin de montrer Nice ci-dessous
le titre et au-dessus du contenu.
Update Obtenir un avis: Offset non défini: 0
Quelqu'un autour de moi pour m'aider?
Si vous jetez un oeil à la source de wp_get_object_terms()
utilisée par de nombreuses fonctions connexes en interne, il n'y a pas d'option pour la personnalisation orderby
dans celle-ci. Je voudrais probablement simplement re-trier les données renvoyées dans PHP pour cela.
Cependant, même plus concrètement, je voudrais simplement récupérer les termes pour différentes taxonomies séparément. Ce que vous avez là semble un peu logique logiquement - par exemple, si l’un des termes est manquant ou s’il en a plus que prévu attribués par erreur? La sortie ira mal vite.