Les articles sur notre blog de musique incluent généralement plusieurs pistes de musique.
Je souhaite que chaque piste soit sa propre entité - un type de publication personnalisé appelé "piste" - que je souhaite pouvoir insérer librement dans une publication où je souhaite utiliser un message. petit code.
L'image ci-dessous explique assez bien ce que je cherche à faire. (Lien vers la page sur laquelle j'ai pris la capture d'écran: http://iloveomfg.com/210/don-rimini-wwhat-kaptain-cadillac-remix/)
Je veux créer un shortcode, [piste] , qui répercute tout le contenu du type de message personnalisé "piste" dont l'identifiant est spécifié. Par exemple, si l’ID de piste est 34, le shortcode à afficher dans la publication sera: [id de piste = 34] ou [id de piste = "34"] .
J'ai jeté un coup d'œil à tous les articles liés à ce sujet sur ce site et j'ai essayé quelques-unes des solutions, mais en vain. J'ai donc décidé d'aller de l'avant et de demander mon problème en particulier. Pouvez-vous me dire exactement ce que je dois faire pour y parvenir?
Faites-moi savoir si vous avez besoin de moi pour clarifier quelque chose.
Je suggérerais de créer une nouvelle taxonomie personnalisée pour les relations entre une publication et ses "pistes" ou de regrouper les publications de pistes si vous le souhaitez. Vous pouvez ainsi créer facilement un shortcode qui interrogera toutes les pistes nécessaires en même temps, en utilisant un shortcode au lieu de en appelant votre shortcode à plusieurs reprises et pour les commander, vous pouvez créer un champ personnalisé dans la piste. Ainsi, dans votre requête, vous pouvez trier par ce champ afin qu'il ressemble à ceci (cela suppose que vous avez une taxonomie personnalisée nommée " post_tracks "et que toutes les pistes de publication ont été ajoutées au même terme de cette taxonomie, et que vous disposez d'un champ personnalisé pour ordonner les pistes nommées" in_order ":
function get_tracks($atts, $content = null) {
extract(shortcode_atts(array(
"post_tracks" => '',
"tracks" => '',
), $atts));
//if post_tracks relation term was passed:
if ($atts['post_tracks'] != ''){
$tracks = NEW WP_Query(array('post_type' => 'track', 'post_tracks' => $atts['post_tracks'], 'orderby' => 'meta_value', 'meta_key' => 'in_order' ));
while($tracks->have_posts()){
$tracks->the_post();
//do whatever you want with each track eg:
$out .= '<div class="track">
<h3>'.get_the_title($post->ID).'<h3>
<div class="track_inner">
<div class="track_img">'. get_the_post_thumbnail($post->ID, 'thumbnail').'</div>
<div class="track_content">'.apply_filters('the_content',get_the_content()).'<div>
</div></div>';
}
return $out;
}
//if its a single track you want:
$tracks = NEW WP_Query(array('post_type' => 'track','post__in' => array($tracks) ));
while($tracks->have_posts()){
$tracks->the_post();
//do whatever you want with each track eg:
$out .= '<div class="track">
<h3>'.get_the_title($post->ID).'<h3>
<div class="track_inner">
<div class="track_img">'. get_the_post_thumbnail($post->ID, 'thumbnail').'</div>
<div class="track_content">'.apply_filters('the_content',get_the_content()).'<div>
</div></div>';
}
return $out;
}
add_shortcode('tracks','get_tracks');
avec cela, vous pouvez simplement appeler votre shortcode comme ceci:
[tracks post_tracks="relation_tern_name"]
ou juste obtenir votre seule piste à la fois:
[tracks tracks="track_id"]
Vous avez deux problèmes ici, je pense.
1 - Faire un code court. Ce didacticiel Nettuts est excellent pour vous guider dans chacune des étapes nécessaires. (bien que vous n’ayez pas besoin de la seconde moitié pour ajouter un bouton tinymce).
2 - Une façon de stocker les détails de la piste. Je suppose que vous pourriez utiliser un nouveau message pour chaque piste avec une méta personnalisée avec le lien vers le fichier audio et tous les autres détails que vous souhaitez. Ensuite, la piste = ID ferait référence à l'ID de la publication et vous utiliseriez le shortcode pour saisir l'ID, puis rechercheriez la publication avec cette ID, puis incluez la méta de cette publication.
J'espère que cela pourra aider.