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

Get WooCommerce featured products with a custom shortcode

我试图通过 jquery 滑块获取一系列特色产品以在我自己的插件中使用主题 我已经制作了这个功能并从 class-wc-shortcodes.php 获取了属性 但没有结果

    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>";

}

我必须添加或更改什么才能使其正常工作 我现在将它用作欢迎页面中的简码,仅用于测试

您的代码中存在一些错误。所以我做了必要的修改。

此外,短代码数据必须返回而不是回显。

功能代码如下:

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 文件或任何插件文件。

This code is tested and will output a list of feature products titles.