2017-11-07 6 views
0

Ich habe ein interessantes Problem, dass ich nicht sicher bin, wie ich damit umgehen soll. Ich versuche Metadaten mit der neuesten WooCommerce REST API zu pushen. Wenn ich von PHP nach Woo drücke und das Ergebnis drucke, kann ich sehen, dass es eindeutig korrekt hinzugefügt wurde.Woocommerce-REST-API - benutzerdefinierte Meta-Daten, die auf der Admin-Produktseite als einzelner Buchstabe angezeigt werden?

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

    ) 

das ist großartig, es macht genau das, was ich will. Wenn ich jedoch mit dem WP-Admin in das Produkt gehe, stelle ich fest, dass der gespeicherte Wert als erster Buchstabe angezeigt wird. In diesem Fall "t" und sonst nichts. Dies wird auch auf der öffentlichen Produktseite angezeigt. Es ist ein einfaches Textfeld.

Wenn ich über das "t" tippe und auf Speichern klicke, speichert es diesen Wert korrekt. Anzeige am Frontend wie es sollte.

Es sieht so aus, als ob meta_data, die aus der REST-API stammen, von Wordpress nicht richtig herausgezogen wird ... also frage ich, was mich dazu bringt, mir die Haare auszuziehen?

Ich benutze den offiziellen Woocommerce PHP Wrapper.

Mein 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] . "' />"; 
    } 
} 

Antwort

0

Die Antwort war, dass ich dumm wurde. Das Beispiel, an dem ich gerade arbeitete, verwendete ein Array, um mehrere verschiedene benutzerdefinierte Felder gleichzeitig zu speichern, und ich rief den Array-Punkt im Gegensatz zum Array an. zB:

$custom_field_type[0] 

statt nur

$custom_field_type 

Sorry für ein derp zu sein! Ich hoffe, das hilft anderen Menschen, die genauso albern sind wie ich!

Verwandte Themen