有没有可能不在unction.php上定义类别,加上短码[短码CAT=1]来展示产品?

时间:2019-12-17 作者:Naren Verma

我创建了一个名为home_slider. 如果我使用[home_slider] 然后,我将在我的页面上获得正在工作的滑块。现在我关心的是,是否可以不在函数上定义类别。php并添加快捷码[home\\u slider cat=1],以显示与类别id 1相关的产品?

<?php 
function home_slider(){
ob_start();
 $args = array(
\'post_type\'   => \'productslider\',
\'order\'          => \'DESC\',
\'orderby\'        => \'date\',
\'posts_per_page\' => 3,
\'post_status\' => array(\'publish\'),
);
$hm_sliders = get_posts( $args );?>
<div class="cp-heroWrapper">
  <div class="slideshow js-slideshow cp_heroSlider">
    <?php
foreach($hm_sliders as $hm_slider){
$feat_image = wp_get_attachment_url( get_post_thumbnail_id($hm_slider->ID) );?>
    <div class="slide">
      <div class="slide_img">
        <div class="cp-heroBannerImg">
            <a href="<?php echo get_post_meta($hm_slider->ID, \'imageURlLink\', true );?>" title=""><img src="<?php echo $feat_image; ?>"><div class="bg_overlay"></div></a>
        </div>

        <div class="cp-heading">
          <h2><a href="<?php echo get_post_meta($hm_slider->ID, \'imageURlLink\', true );?>" title=""><?php echo $hm_slider->post_title ?></a></h2>
        </div>

      </div>
    </div>
    <?php } ?>
  </div>
</div>
<?php
        return ob_get_clean();

}
add_shortcode( \'home_slider\', \'home_slider\' );
 ?>

1 个回复
最合适的回答,由SO网友:Chetan Vaghela 整理而成

您可以使用shortcode_atts 获取您正在传递的类别[home_slider cat=1]. 我想你的分类法是category. 您可以替换为您的分类法。您还可以使用逗号分隔的方式传递多个cat id。对于eg[home_slider cat=1,2,3]. 它将返回该类别帖子的滑块。

function home_slider($params = array()){
    extract(shortcode_atts(array(
        \'cat\' => "",
    ), $params));

    ob_start();
     $args = array(
    \'post_type\'   => \'productslider\',
    \'order\'          => \'DESC\',
    \'orderby\'        => \'date\',
    \'posts_per_page\' => 3,
    \'post_status\' => array(\'publish\'),
    );
     if(!empty($cat))
     {
        if( strpos($cat, \',\' ) !== false ) {
            $cat = explode( \',\' , $cat );
        }
       $args[\'tax_query\'] = array(
                array(
                    \'taxonomy\' => \'category\',
                    \'field\' => \'term_id\',
                    \'terms\' => $cat
                     )
                );
    }
    $hm_sliders = get_posts( $args );?>
    <div class="cp-heroWrapper">
      <div class="slideshow js-slideshow cp_heroSlider">
        <?php
    foreach($hm_sliders as $hm_slider){
    $feat_image = wp_get_attachment_url( get_post_thumbnail_id($hm_slider->ID) );?>
        <div class="slide">
          <div class="slide_img">
            <div class="cp-heroBannerImg">
                <a href="<?php echo get_post_meta($hm_slider->ID, \'imageURlLink\', true );?>" title=""><img src="<?php echo $feat_image; ?>"><div class="bg_overlay"></div></a>
            </div>

            <div class="cp-heading">
              <h2><a href="<?php echo get_post_meta($hm_slider->ID, \'imageURlLink\', true );?>" title=""><?php echo $hm_slider->post_title ?></a></h2>
            </div>

          </div>
        </div>
        <?php } ?>
      </div>
    </div>
    <?php
    return ob_get_clean();
}
add_shortcode( \'home_slider\', \'home_slider\' );

相关推荐

Gutenberg Shortcode Fail

WP 5.2.2是否可以在古腾堡短代码块之外渲染短代码?我创建了一个短代码,多年来一直在几页上使用它。在那些页面上效果很好。。。我害怕编辑它们,害怕它们被破坏:/我创建了一个新页面,我想在其上使用短代码。但是,未处理短代码。我尝试过通过代码编辑器插入它,并在html块中使用它。无论哪种方式,它都无法渲染。如果我创建一个短代码块并将我的短代码放在其中,它就会工作。然而,由于我使用短代码来填充隐藏的表单字段,我不相信这个选项对我有用。我的测试中没有。示例: <form action=\"https://