创建可用的 WooCommerce 优惠券代码列表并使用简码在任何地方显示
Creating a List of Available WooCommerce Coupon Codes and Display anywhere Using Shortcode
我正在尝试生成可用优惠券列表并使用简码显示它们。我希望使用 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) 在 post、自定义 post 或页面的 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 文件。已测试并有效。
与第一个函数用法相同
我正在尝试生成可用优惠券列表并使用简码显示它们。我希望使用 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) 在 post、自定义 post 或页面的 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 文件。已测试并有效。
与第一个函数用法相同