J'ai créé une taxonomie de posts dans functions.php appelée 'leadership', puis étiquetée des posts avec trois libellés différents. J'ai une page d'équipe sur laquelle je veux placer trois liens (chaque slugged à une étiquette dans la taxonomie).
Ainsi, lorsque l'utilisateur clique sur le mot ci-dessus, l'image sélectionnée pour chaque publication portant cette étiquette devient visible sur la page.
Donc, il y a trois éléments de base (je pense):
Alors que j'avais déjà fait les n ° 2 et 3 individuellement, ma tête nage pour essayer de comprendre comment fusionner tous les éléments.
Est-ce que quelqu'un peut me donner des indications, au-delà du codex que j'ai déjà lu? Et peut-être même un exemple de code - en particulier pour les n ° 1 et n ° 2?
Et le rêve ... J'adorerais le mettre en oeuvre sous forme de deux codes abrégés - un pour le lien et un pour l'affichage - afin que je puisse le réutiliser dans d'autres zones du site Web.
Quelque chose d'assez grossier qui a besoin d'amélioration mais peut vous donner un point de départ, si j'ai bien compris vos besoins: utilisez [dr]
comme marqueur de shortcode où vous le souhaitez
function my_dream_shortcode($atts, $content = null) {
ob_start(); ?>
<ul>
<li class="button" onClick="get_data('corporate')">Corporate</li>
<li class="button" onClick="get_data('sales')">Sales</li>
<li class="button" onClick="get_data('support')">Support</li>
</ul>
<div class="my_plugin_result"></div>
<style>
li.button{
list-style:none;
padding:4px 10px;
background-color:cadetblue;
margin:10px;
float:left;
min-width: 160px;
text-align: center;
cursor:pointer;
}
.my_plugin_result figure{
float:left;
padding:4px;
background:#ccc;
}
</style>
<script>
var myPluginAjaxUrl = '<?php echo admin_url( 'admin-ajax.php'); ?>';
function get_data(term) {
jQuery.ajax({
url: myPluginAjaxUrl,
data: {
action: 'get_data_for_my_shortcode',
term: term
}
}).done(function (response) {
console.log(response)
jQuery(".my_plugin_result").html(response);
});
}
</script>
<?php
return ob_get_clean();
}
add_shortcode("dr", "my_dream_shortcode");
add_action('wp_ajax_get_data_for_my_shortcode', 'get_data_for_my_shortcode');
function get_data_for_my_shortcode(){
global $wpdb;
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'leadership',
'field' => 'slug',
'terms' => $_REQUEST['term']
)
)
);
$response="";
$query = new WP_Query( $args );
while($query->have_posts() ):
if($query->have_posts() ):
$query->the_post();
$response.='<figure><img src="'.get_the_post_thumbnail_url(get_the_ID(),'medium').'"/></figure>';
endif;
endwhile;
echo $response;
die();
}
Pour les futurs lecteurs, le code ci-dessus s'affichera une fois connecté , mais pas pour les utilisateurs déconnectés.
Si vous voulez que les visiteurs du site voient la sortie , vous devez ajouter:
add_action('wp_ajax_nopriv_get_data_for_my_shortcode', 'get_data_for_my_shortcode');
Il m'a fallu un certain temps pour résoudre ce problème. Merci WP Codex.