为了账号安全,请及时绑定邮箱和手机立即绑定

自定义 Woocommerce 产品列表短代码

自定义 Woocommerce 产品列表短代码

PHP
开满天机 2022-07-09 16:08:47
我正在尝试创建一个简单的自定义 Woocommerce 产品短代码,它将获得如下产品列表:[custom_products_list ids='32,21,44,56']并将输出带有 URL、标题、按名称排序和 ACS 的产品不需要其他信息,不需要缩略图或其他。就如上。我不想故意使用默认产品简码。我将不胜感激任何帮助!提前致谢!
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

像这样的东西...


function custom_product_list_shortcode( $atts, $content = null ) {


    $_atts =  shortcode_atts( [

        'ids' => '',

    ], $atts );


    $ids_arr = array_filter( array_map( function( $id ){

        return trim( $id );

    }, explode( ',', $_atts['ids'] ) ) );


    $products = wc_get_products( [

        'post_status' => 'publish',

        // can't remember if it's 'orderby' or 'order_by'

        'order_by' => [

            'title' => 'ASC',

            'post_date' => 'DESC',

        ],

        'posts_per_page' => -1,

        // you can probably just pass in the comma sep string instead of array but maybe not.

        // you need to check that post__in is correct. look at the docs for WP_Query, or WC_Query, or wc_get_products()

        'post__in' => $ids_arr,

    ]);


    // you could write your own sorting function like this if you want but you probably shouldn't need to

    // rsort( $products, function( $p1, $p2 ) {});


    // the html is for you to complete

    ob_start();

    ?>

    <div class="products-list">

        <?php foreach ( $products as $product ) { ?>

            <div class="product">

                <pre>

                    <?= print_r( $product, true ); ?>

                    <?= get_title( $product->ID ); ?>

                </pre>

            </div>

        <?php } ?>

    </div>

    <?php

    return ob_get_clean();

}


add_shortcode( 'custom_product_list', 'custom_product_list_shortcode' );


查看完整回答
反对 回复 2022-07-09
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信