php - 创建可用的 WooCommerce 优惠券代码列表并使用简码在任何地方显示

标签 php wordpress woocommerce shortcode coupon

我正在尝试生成可用优惠券列表并使用短代码显示它们。我希望使用 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;
}

最佳答案

您的代码中有 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 文件。经过测试并有效。

与第一个函数的用法相同

关于php - 创建可用的 WooCommerce 优惠券代码列表并使用简码在任何地方显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62230388/

相关文章:

javascript - Zurb Foundation 顶部栏根本不工作

wordpress - 在 WooCommerce 管理订单列表上添加多个自定义列(备注和增值税)

php - 在 WooCommerce 中点击自动更新购物车

php - 显示 woocommerce 中所选变体的属性术语描述

php - Symfony 与电子商务网站的其他框架

php - 仅自动备份 MySql 数据库和 WHM 中的选定文件夹或通过 cron 作业命令

php - 删除重复项的空函数

php - 添加 "sDom"后数据表未加载数据

php - 从 WordPress API (wp-json) 取消设置数据

wordpress - 如何在 Wordpress 中重定向到 https?