如何从ShortCode属性中获取一个特定术语?

时间:2017-05-30 作者:Darren Bachan

我正在处理一个函数,我只想输出一个链接到特定术语的按钮。我用过get_the_terms 我已经成功地让它工作了,但我一直在努力get_term 我没有运气。我想让短代码看起来像这样[see_all_products category="bakery"] 并输出一个链接到它的按钮。

这是我目前的职能:

function product_category_button($atts) {

    extract(shortcode_atts(array(
        \'category\'  => \'\',
    ), $atts));

    // if( $category ) :

        // Vars
        $taxonomy = \'product_categories\';
        $term = get_term( $category, $taxonomy ); //$post->ID
        $cat = $term->name;
        $parent = $term->parent;

        var_dump($cat);

        if ($parent == NULL) :

            // Vars
            $link = get_term_link( $term->slug, $taxonomy);

            $html_out = \'\';
            $html_out .= \'<a class="x-btn x-btn-primary x-btn-global hvr-bounce-to-bottom" href="\' . $link . \'">\' . \'See All Products\' . $cat . \'</a>\';
        endif;

        return $html_out;

    // endif;
}

add_shortcode( \'see_all_products\', \'product_category_button\' );
现在,$link 给我这个错误“可捕获的致命错误:类WP\\u error的对象无法转换为字符串”,并且$cat 退货NULLvar_dump.

不确定这是否会影响它,但$parent 这里的东西只是为了得到父术语。

2 个回复
SO网友:Johansson

你似乎想用鼻涕虫或名字来称呼它。get_term() 将通过其id获取所有术语的数据。在这种情况下,使用get_term_by() 而是:

function product_category_button($atts) {

    extract(shortcode_atts(array(
        \'category\'  => \'\',
    ), $atts));

    // if( $category ) :

        // Vars
        $taxonomy = \'product_categories\';
        // Use \'name\' instead of \'slug\' if you want to get the term by it\'s name
        $term = get_term_by( \'slug\' , $category, $taxonomy ); //$post->ID
        $cat = $term->name;
        $parent = $term->parent;

        var_dump($cat);

        if ($parent == NULL) :

            // Vars
            $link = get_term_link( $term->slug, $taxonomy);

            $html_out = \'\';
            $html_out .= \'<a class="x-btn x-btn-primary x-btn-global hvr-bounce-to-bottom" href="\' . $link . \'">\' . \'See All Products\' . $cat . \'</a>\';
        endif;

        return $html_out;

    // endif;
}

add_shortcode( \'see_all_products\', \'product_category_button\' );
要进一步阅读,请查看codex.

SO网友:smail

使用

get_category_linkget_category_by_slug

function product_category_button($atts) {

  extract(shortcode_atts(array(
      \'category_slug\'  => \'\',
  ), $atts));

  // if( $category_slug) :
          $get_category = get_category_by_slug($category_slug);

          $link = get_category_link($get_category);

          $html_out = \'\';
          $html_out .= \'<a class="x-btn x-btn-primary x-btn-global hvr-bounce-to-bottom" href="\' . $link . \'">\' . \'See All Products\' . $get_category->name. \'</a>\';


      return $html_out;

  // endif;
}

add_shortcode( \'see_all_products\', \'product_category_button\' );

结束

相关推荐

Custom taxonomy Rewrite Rule

我希望我的分类url如下:site。com/page/taxonomy\\u术语我如何才能做到这一点?我在函数中编写了wordpress重写规则代码。php如下所示:function sphere_custom_rewrite_rules( $rules ){ $newrules[\'(.+?)/([^/]*)/?\'] = \'index.php?pagename=$matches[1]&positive_sphere=$matches[2]\'; $newrul