2016-10-12 6 views
1

У меня есть специальный мета-ящик в бэкэнде WooCommerce. В настоящее время у меня есть настройка для отображения некоторых данных с одной страницы продукта.Получить продукт WooCommerce SKU на страницах продуктов meta box

Я использовал <?php the_title(); ?> для отображения названия продукта, и я использовал <?php the_field('myfield'); ?> для отображения некоторого содержимого из поля ACF.

Я действительно хочу иметь возможность отображать SKU в этом мета-окне, но все, что я пробовал, разбивает страницу.

Я пробовал добавить <?php echo $product->get_sku(); ?>, и он разбивает страницу. Я попробовал кучу других вещей.

Мне просто нужно передать значение sku на вкладке инвентаря в мета-окно на той же странице администратора.

Может ли кто-нибудь еще с этим? Благодарю.

+0

Вы когда-нибудь определяли '$ product'? – helgatheviking

+0

Я добавил ответ ниже, объясняя, какую часть кода я использовал. Еще раз спасибо. – minemind

ответ

3

Вы могли бы попытаться вставить новый METABOX SKU поле на страницах продукта общие варианты так:

add_action('woocommerce_product_options_general_product_data', 'add_the_sku_to_general_product_field'); 
function add_the_sku_to_general_product_field() { 
    global $post; 

    $product_sku = get_post_meta($post->ID, '_sku', true); 

    echo '<div class="options_group">'; 

    woocommerce_wp_text_input(array(
     'id'    => '_sku', 
     'label'    => __('SKU', 'woocommerce'), 
     'placeholder'  => '', 
     'description'  => __('Enter the SKU', 'woocommerce') 
    )); 

    echo '</div>'; 

} 

// Saving the Custom Admin Field in general tab products pages when submitted 
add_action('woocommerce_process_product_meta', 'save_the_sku_to_general_product_field'); 
function save_the_sku_to_general_product_field($post_id){ 

    $wc_field = $_POST['_sku']; 

    if(!empty($wc_field)) 
     update_post_meta($post_id, '_sku', esc_attr($wc_field)); 
} 

или в качестве альтернативы просто отображая SKU ...

enter image description here

С помощью этого кода:

add_action('woocommerce_product_options_general_product_data', 'add_the_sku_to_general_product_field'); 
function add_the_sku_to_general_product_field() { 
    global $post; 

    $product_sku = get_post_meta($post->ID, '_sku', true); 

    echo '<div class="options_group">'; 

    echo '<p class="form-field _sku_product "><label for="_sku_product">SKU: </label><span style="font-size:120%;">'.$product_sku.'</span></p>'; 

    echo '</div>'; 

} 

Как я не использую плагин, я не гарантирую, что это должно работать, но вы должны попробовать.

Код находится в файле functions.php вашей активной дочерней темы (или темы), а также в любом файле плагина.


Ссылки:

0

Вы задали $product переменную как глобальную переменную (global $product;)? об этом уже упоминал @helgatheviking.

нравится:

global $product; 
echo 'SKU: ' . $product->get_sku(); 
+0

Мой мета-ящик создается через плагин. Я попытался установить его как глобальный в плагине, и это не помогает. – minemind

+0

@minemind это не о метаболизме, вы сказали, что пытаетесь получить значение sku, но он разбивает вашу страницу так, что вы использовали ' get_sku(); ?> 'только что положил' global $ product; 'раньше. Имеет ли это смысл ? – mlbd

+0

Да, это то, что я сделал, и он все еще разбивает страницу. – minemind

2

Спасибо.

Следующая часть кода, которую вы предложили, теперь работает внутри плагина.

global $post; 

$product_sku = get_post_meta($post->ID, '_sku', true); 

когда эхо $product_sku возвращает значение.

+0

Это работает в любом месте на странице продукта. Спасибо. –

0

Добавьте это к вашим функциям.PHP для отображения SKU (код продукта) в странице:

add_action('woocommerce_single_product_summary', 'dev_designs_show_sku', 5); 
function dev_designs_show_sku(){ 
    global $product; 
    echo 'Product Code: ' . $product->get_sku(); 
} 

enter image description here

enter image description here

Если вы получаете удивлены увидеть код продукта вместо СКА; Я использую ниже код для замены SKU по коду продукта (согласно требованиям клиента)

function translate_woocommerce($translation, $text, $domain) { 
    if ($domain == 'woocommerce') { 
     switch ($text) { 
      case 'SKU': 
       $translation = 'Product Code'; 
       break; 
      case 'SKU:': 
       $translation = 'Product Code:'; 
       break; 
     } 
    } 
    return $translation; 
} 

add_filter('gettext', 'translate_woocommerce', 10, 3);