如何显示带有特定分类标签的所有帖子的特色图片?

时间:2018-08-08 作者:bulldog

我在函数中创建了一个post分类法。php称之为“领导力”,然后用三种不同的标签标记帖子。我有一个团队页面,我想在上面放置三个链接(每个链接都指向分类法中的一个标签)。

公司销售支持,这样当单击上面的单词时,页面上就会显示带有该标签的每篇文章的特色图像。

所以有三个基本要素(我认为):

调用指定分类标签的所有帖子数据,生成一个链接,调用这些帖子的特色图像,内容根据单击的链接显示/消失。之前我分别做了第2步和第3步,我的头在游动,试图找出如何将所有元素合并在一起

除了我已经读过的抄本之外,有人能给我一些指点吗?甚至可能还有一些示例代码-尤其是对于#1和#2?

And the dream... 我希望将其实现为两个短代码,一个用于链接,一个用于显示,这样我就可以在网站的其他区域重用它。

2 个回复
最合适的回答,由SO网友:Andrea Somovigo 整理而成

一些非常粗糙的东西需要改进,但如果我了解你的需要,可以给你一个起点:使用[dr] 作为所需的短代码标记

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_nopriv_get_data_for_my_shortcode\', \'get_data_for_my_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();
}
感谢@bulldog 编辑代码以在前端有效工作

SO网友:bulldog

对于未来的读者,the above code will display when logged in, 但不适用于已注销的用户。

If you want site visitors to see output, 然后您需要添加:

add_action(\'wp_ajax_nopriv_get_data_for_my_shortcode\', \'get_data_for_my_shortcode\');
我花了一些时间来解决这个问题。Thank you WP Codex.

结束

相关推荐