Woocommerce REST API - 自定义元数据在管理员产品页面上显示为单个字母?

时间:2017-11-07 17:57:46

标签: php wordpress woocommerce metadata woocommerce-rest-api

我有一个有趣的问题,我不知道如何处理。我正在尝试使用最新的Woocommerce REST API推送元数据。当我从PHP推送到woo并打印结果时,我可以看到它显然已被正确添加。

[meta_data] => Array
    (
        [0] => Array
            (
                [id] => 108536
                [key] => _product_size_guide
                [value] => thevalue
            )

    )

这很棒,它完全符合我的要求。但是,如果我使用WP Admin进入产品,我发现存储的值显示为它的第一个字母。在这种情况下,“t”,没有别的。它也会在公共产品页面上显示。这是一个简单的文本字段。

如果我输入“t”并点击“保存”,它会正确存储该值。正确显示前端。

看起来从REST API推送的meta_data没有被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] . "' />";
    }
}

1 个答案:

答案 0 :(得分:0)

答案是我很傻。我正在研究的例子使用了一个数组来同时存储几个不同的自定义字段,而我正在调用数组点而不是数组。例如:

$custom_field_type[0]

而不仅仅是

$custom_field_type

对不起是一个derp!我希望这能帮助其他可能像我一样愚蠢的人!