Woocommerce REST API - 自定义 meta_data 在管理产品页面上显示为单个字母?
Woocommerce REST API - custom meta_data showing on admin product page as single letter?
我有一个有趣的问题,但我不确定如何处理。我正在尝试使用最新的 Woocommerce REST API 推送元数据。当我从 PHP 按下 woo 并打印结果时,我可以看到它显然已正确添加。
[meta_data] => Array
(
[0] => Array
(
[id] => 108536
[key] => _product_size_guide
[value] => thevalue
)
)
太棒了,它完全符合我的要求。但是,如果我使用 WP Admin 进入产品,我发现存储的值显示为它的第一个字母。在这种情况下,"t" 没有别的。它也在 public 产品页面上显示为这个。这是一个简单的文本字段。
如果我输入 "t" 并点击保存,它会正确存储该值。显示在前端。
看起来 meta_data 从 REST 推送 API 没有被 wordpress 正确拉出...所以我在这里问是什么导致我拉出我的头发?
我正在使用官方 woocommerce php 包装器。
我的functions.php:
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
?>
<p class="form-field custom_field_type">
<label for="custom_field_type"><?php echo __( 'Product Size Guide', 'woocommerce' ); ?></label>
<span class="wrap">
<?php $custom_field_type = get_post_meta( $post->ID, '_product_size_guide', true ); ?>
<input placeholder="<?php _e( 'URL to Size Guide', 'woocommerce' ); ?>" class="" type="text" name="_size_guide" value="<?php echo $custom_field_type[0]; ?>" style="width: 180px;" />
</span>
<span class="description"><?php _e( 'Image used for the size guide!', 'woocommerce' ); ?></span>
</p>
<?php
echo '</div>';
}
function woo_add_custom_general_fields_save( $post_id ){
// Custom Field
$custom_field_type = array( esc_attr( $_POST['_size_guide'] ) );
update_post_meta( $post_id, '_product_size_guide', $custom_field_type );
}
//SUCCESSFULL WOOCOMMERCE SCIENCE
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {
// Adds the new tab
$tabs['size-gude'] = array(
'title' => __( 'Size Guide', 'woocommerce' ),
'priority' => 50,
'callback' => 'woo_new_product_tab_content'
);
return $tabs;
}
function woo_new_product_tab_content() {
// The new tab content
echo '<h2>Size guide for garment</h2>';
$getSizeLink =get_post_meta( get_the_ID(), '_product_size_guide', true);
if(empty($getSizeLink[0])){
echo "No Size Guide Available.";
}else{
echo "<img src='" . $getSizeLink[0] . "' />";
}
}
答案是我很傻。我正在处理的示例使用数组一次存储多个不同的自定义字段,并且我调用的是数组点,而不仅仅是数组。例如:
$custom_field_type[0]
而不仅仅是
$custom_field_type
对不起,我是个笨蛋!我希望这可以帮助其他可能和我一样愚蠢的人!
我有一个有趣的问题,但我不确定如何处理。我正在尝试使用最新的 Woocommerce REST API 推送元数据。当我从 PHP 按下 woo 并打印结果时,我可以看到它显然已正确添加。
[meta_data] => Array
(
[0] => Array
(
[id] => 108536
[key] => _product_size_guide
[value] => thevalue
)
)
太棒了,它完全符合我的要求。但是,如果我使用 WP Admin 进入产品,我发现存储的值显示为它的第一个字母。在这种情况下,"t" 没有别的。它也在 public 产品页面上显示为这个。这是一个简单的文本字段。
如果我输入 "t" 并点击保存,它会正确存储该值。显示在前端。
看起来 meta_data 从 REST 推送 API 没有被 wordpress 正确拉出...所以我在这里问是什么导致我拉出我的头发?
我正在使用官方 woocommerce php 包装器。
我的functions.php:
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
?>
<p class="form-field custom_field_type">
<label for="custom_field_type"><?php echo __( 'Product Size Guide', 'woocommerce' ); ?></label>
<span class="wrap">
<?php $custom_field_type = get_post_meta( $post->ID, '_product_size_guide', true ); ?>
<input placeholder="<?php _e( 'URL to Size Guide', 'woocommerce' ); ?>" class="" type="text" name="_size_guide" value="<?php echo $custom_field_type[0]; ?>" style="width: 180px;" />
</span>
<span class="description"><?php _e( 'Image used for the size guide!', 'woocommerce' ); ?></span>
</p>
<?php
echo '</div>';
}
function woo_add_custom_general_fields_save( $post_id ){
// Custom Field
$custom_field_type = array( esc_attr( $_POST['_size_guide'] ) );
update_post_meta( $post_id, '_product_size_guide', $custom_field_type );
}
//SUCCESSFULL WOOCOMMERCE SCIENCE
add_filter( 'woocommerce_product_tabs', 'woo_new_product_tab' );
function woo_new_product_tab( $tabs ) {
// Adds the new tab
$tabs['size-gude'] = array(
'title' => __( 'Size Guide', 'woocommerce' ),
'priority' => 50,
'callback' => 'woo_new_product_tab_content'
);
return $tabs;
}
function woo_new_product_tab_content() {
// The new tab content
echo '<h2>Size guide for garment</h2>';
$getSizeLink =get_post_meta( get_the_ID(), '_product_size_guide', true);
if(empty($getSizeLink[0])){
echo "No Size Guide Available.";
}else{
echo "<img src='" . $getSizeLink[0] . "' />";
}
}
答案是我很傻。我正在处理的示例使用数组一次存储多个不同的自定义字段,并且我调用的是数组点,而不仅仅是数组。例如:
$custom_field_type[0]
而不仅仅是
$custom_field_type
对不起,我是个笨蛋!我希望这可以帮助其他可能和我一样愚蠢的人!