gpt4 book ai didi

php - 单个产品字段的 WooCommerce 多选

转载 作者:行者123 更新时间:2023-12-03 23:23:48 25 4
gpt4 key购买 nike

我正在尝试在单个产品页面上添加列表框,我想知道 woocommerce 中没有多选选项,对于 get_option域 woocommerce 支持多选,但适用于 post_meta woocommerce 仅支持单选,不确定 woocommerce 是否有任何限制,否则我可能会错过某些内容以获得多选?这是我尝试过的以下代码

 function create_multiselect() { 

woocommerce_wp_select(array(
'id' => 'newoptions',
'class' => 'newoptions',
'label' => __('Testing Multiple Select', 'woocommerce'),
'options' => array(
'1' => 'User1',
'2' => 'User2',
'3' => 'User3',
))
);

}

add_action("woocommerce_product_options_pricing","create_multiselect");

任何建议都会很棒。

最佳答案

woocommerce_wp_select()功能不支持多选,可以打开wc-meta-box-functions.php文件在 /woocommerce/includes/admin目录以查看默认行为。

但是是什么阻止您创建自己的函数,该函数将基于默认的 Woo 函数,并添加所需的功能,甚至更改默认函数(但仍然,修改插件文件不是最佳实践)。这是一个如何编写具有多重支持的新函数的示例,与原始函数的唯一变化是添加了对名称和多个属性的支持,以及所选项目的不同逻辑(因为 post meta 现在是一个数组)。

function woocommerce_wp_select_multiple( $field ) {
global $thepostid, $post, $woocommerce;

$thepostid = empty( $thepostid ) ? $post->ID : $thepostid;
$field['class'] = isset( $field['class'] ) ? $field['class'] : 'select short';
$field['wrapper_class'] = isset( $field['wrapper_class'] ) ? $field['wrapper_class'] : '';
$field['name'] = isset( $field['name'] ) ? $field['name'] : $field['id'];
$field['value'] = isset( $field['value'] ) ? $field['value'] : ( get_post_meta( $thepostid, $field['id'], true ) ? get_post_meta( $thepostid, $field['id'], true ) : array() );

echo '<p class="form-field ' . esc_attr( $field['id'] ) . '_field ' . esc_attr( $field['wrapper_class'] ) . '"><label for="' . esc_attr( $field['id'] ) . '">' . wp_kses_post( $field['label'] ) . '</label><select id="' . esc_attr( $field['id'] ) . '" name="' . esc_attr( $field['name'] ) . '" class="' . esc_attr( $field['class'] ) . '" multiple="multiple">';

foreach ( $field['options'] as $key => $value ) {

echo '<option value="' . esc_attr( $key ) . '" ' . ( in_array( $key, $field['value'] ) ? 'selected="selected"' : '' ) . '>' . esc_html( $value ) . '</option>';

}

echo '</select> ';

if ( ! empty( $field['description'] ) ) {

if ( isset( $field['desc_tip'] ) && false !== $field['desc_tip'] ) {
echo '<img class="help_tip" data-tip="' . esc_attr( $field['description'] ) . '" src="' . esc_url( WC()->plugin_url() ) . '/assets/images/help.png" height="16" width="16" />';
} else {
echo '<span class="description">' . wp_kses_post( $field['description'] ) . '</span>';
}

}
echo '</p>';
}

如何使用该功能的示例:
woocommerce_wp_select_multiple( array(
'id' => 'newoptions',
'name' => 'newoptions[]',
'class' => 'newoptions',
'label' => __('Testing Multiple Select', 'woocommerce'),
'options' => array(
'1' => 'User1',
'2' => 'User2',
'3' => 'User3',
))
);

关于php - 单个产品字段的 WooCommerce 多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23287358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com