短代码包装内容代码

时间:2018-05-02 20:34:35

标签: php wordpress

我创建了一个包含链接列表的短代码。问题是 - 插入短代码之后的博客文章内容最终在短代码包装div(代码中的.customwrap和.customcontainer)内部。链接列表实际上是具有自定义分类的自定义帖子类型。显示的分类法由一个短代码属性(放置)确定。还有动态类,由另一个属性(位置)确定。

这是代码。

function custom_links_code($atts) {
    ob_start();
   extract(shortcode_atts(array(
      'placement' => 'test',
      'position' => 'horizontal'
   ), $atts)); 
?>

<!-- content following shortcode ends up inside these divs -->   
<div class="customwrap <?php echo $atts['position']; ?>">
<div class="customcontainer">

<?php

  $args = array(
  'post_type'   => 'links',
  'post_status' => 'publish',
  'tax_query'   => array(
    array(
        'taxonomy' => 'Placements',
        'field'    => 'slug',
        'terms'    => $atts['placement']
    )
  )
 );

$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
 ?>

<a href="<?php echo get_post_meta(get_the_ID(), 'link-url', true); ?>"> 
 <?php the_title(); ?>
 </a>
 <?php 
endwhile;
wp_reset_query();
return ob_get_clean();
} 
echo '</div></div>';
add_shortcode('custom-links', 'custom_links_code');

1 个答案:

答案 0 :(得分:1)

看起来您需要将结束div移动到您的函数中:

...
<?php the_title(); ?>
</a>
<?php endwhile; ?>
</div></div> 
<?php // ^^---- This closes our divs ?>
wp_reset_query();
return ob_get_clean();
} 

add_shortcode('custom-links', 'custom_links_code');