【问题标题】:Creating a List of Available WooCommerce Coupon Codes and Display anywhere Using Shortcode创建可用 WooCommerce 优惠券代码列表并使用简码在任何地方显示
【发布时间】:2020-06-06 10:29:03
【问题描述】:

我正在尝试生成可用优惠券列表并使用简码显示它们。我希望使用 SQL 而不是“-1”来生成列表,因为据我了解,这对数据库来说更重。

我得到的错误是:Notice: Array to string conversion

add_shortcode('ac', 'coupon_list' );
function coupon_list() {

    // array for coupons, was hoping for a sql query instead but don't know how
    $args = array(
    'posts_per_page'   => -1,
    'orderby'          => 'title',
    'order'            => 'asc',
    'post_type'        => 'shop_coupon',
    'post_status'      => 'publish',
);

    $coupons = get_posts( $args );
        $coupon_names = array();
            foreach ( $coupons as $coupon ) {
        $coupon_name = $coupon->post_title;
        array_push( $coupon_names, $coupon_name );
    }

    // display all available coupons on product page
    echo $coupon_names;
}

【问题讨论】:

    标签: php wordpress woocommerce shortcode coupon


    【解决方案1】:

    您的代码中有 2 个错误:您正在尝试使用 echo 显示一个数组,并且在使用简码函数时,要显示的数据需要返回 (不回显) .

    以下函数(短代码)将使用简单的 SQL 查询显示所有可用优惠券代码的逗号分隔字符串:

    add_shortcode('ac', 'available_coupon_codes' );
    function available_coupon_codes() {
        global $wpdb;
    
        // Get an array of all existing coupon codes
        $coupon_codes = $wpdb->get_col("SELECT post_name FROM $wpdb->posts WHERE post_type = 'shop_coupon' AND post_status = 'publish' ORDER BY post_name ASC");
    
        // Display available coupon codes
        return implode(', ', $coupon_codes) ; // always use return in a shortcode
    }
    

    代码在您的活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。


    用法:

    1) 在文章、自定义文章或页面的 WordPress 文本编辑器中:

    [ac]
    

    2) 在 php 文件或模板上:

    echo available_coupon_codes();
    

    echo do_shortcode('[ac]');
    

    使用 WP_Query(就像在您的代码中一样):

    add_shortcode('ac', 'coupon_list' );
    function coupon_list() {
        $coupon_posts = get_posts( array(
            'posts_per_page'   => -1,
            'orderby'          => 'name',
            'order'            => 'asc',
            'post_type'        => 'shop_coupon',
            'post_status'      => 'publish',
        ) );
    
        $coupon_codes = []; // Initializing
    
        foreach( $coupon_posts as $coupon_post) {
            $coupon_codes[] = $coupon_post->post_name;
        }
    
        // Display available coupon codes
        return implode(', ', $coupon_codes) ; // always use return in a shortcode
    }
    

    代码在您的活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

    和第一个函数用法一样

    【讨论】:

    • 哇哦。谢谢。
    • 请帮我获取“金额”
    猜你喜欢
    • 2019-08-10
    • 2014-11-26
    • 1970-01-01
    • 2021-04-09
    • 2017-07-13
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 2016-02-25
    相关资源
    最近更新 更多