使用自定义短代码获取WooCommerce特色产品

时间:2017-07-25 16:37:58

标签: php wordpress woocommerce shortcode product

我尝试使用jquery滑块在我自己的插件中使用主题的一系列特色产品 我已经完成了这个功能,并从class-wc-shortcodes.php获得了attrs 但没有结果

    add_shortcode('soqopslider', 'wps_soqopslider');
function wps_soqopslider() {

        $atts = shortcode_atts( array(
            'per_page' => '12',
            'columns'  => '4',
            'orderby'  => 'date',
            'order'    => 'desc',
            'category' => '',  // Slugs
            'operator' => 'IN', // Possible values are 'IN', 'NOT IN', 'AND'.
        ), $atts, 'featured_products' );

        $meta_query  = WC()->query->get_meta_query();
        $tax_query   = WC()->query->get_tax_query();
        $tax_query[] = array(
            'taxonomy' => 'product_visibility',
            'field'    => 'name',
            'terms'    => 'featured',
            'operator' => 'IN',
        );


    $query_args = array(
                'post_type'           => 'product',
                'post_status'         => 'publish',
                'ignore_sticky_posts' => 1,
                'posts_per_page'      => $atts['per_page'],
                'orderby'             => $atts['orderby'],
                'order'               => $atts['order'],
                'meta_query'          => $meta_query,
                'tax_query'           => $tax_query,
            );

    // The Query
    $the_query = new WP_Query( query_args );

    // The Loop
    if ( $the_query->have_posts() ) {
        echo '<ul>';
        while ( $the_query->have_posts() ) {
            $the_query->the_post();
            echo '<li>' . get_the_title() . '</li>';
        }
        echo '</ul>';
        /* Restore original Post Data */
        wp_reset_postdata();
    } else {
        echo "No featured products found :(";
    }

    return "<span style='background:green;color:white;' >nothing</span>";

}

我必须添加或更改以使其有效 我现在将它用作欢迎页面中的短代码,仅用于测试

1 个答案:

答案 0 :(得分:2)

您的代码中存在一些错误。所以我有佣人必要的改变。

还必须返回短代码数据而不回显。

以下是功能代码:

add_shortcode('soqopslider', 'wps_soqopslider');
function wps_soqopslider( $atts) {

    $atts = shortcode_atts(
        array(
            'per_page' => '12',
            'columns'  => '4',
            'orderby'  => 'date',
            'order'    => 'desc',
            'category' => '',  // Slugs
            'operator' => 'IN', // Possible values are 'IN', 'NOT IN', 'AND'.
        ), $atts, 'soqopslider'
    );

    $meta_query  = WC()->query->get_meta_query();
    $tax_query   = WC()->query->get_tax_query();
    $tax_query[] = array(
        'taxonomy' => 'product_visibility',
        'field'    => 'name',
        'terms'    => 'featured',
        'operator' => 'IN',
    );

    $query_args = array(
        'post_type'           => 'product',
        'post_status'         => 'publish',
        'ignore_sticky_posts' => 1,
        'posts_per_page'      => $atts['per_page'],
        'orderby'             => $atts['orderby'],
        'order'               => $atts['order'],
        'meta_query'          => $meta_query,
        'tax_query'           => $tax_query,
    );

    // The Query
    $the_query = new WP_Query( $query_args );

    $html = '</ul>';

    // The Loop
    if ( $the_query->have_posts() ) {
        while ( $the_query->have_posts() ) {
            $the_query->the_post();
            $html .= '<li>' . get_the_title() . '</li>';
        }
        // Restore original Post Data
        wp_reset_postdata();
        // Output
        return $html . '</ul>';
    } else {
        return "No featured products found :(";
    }
}

## BASIC USAGE: [soqopslider]

# ---- #

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

  

此代码经过测试,将输出功能产品标题列表。