2016-10-12 25 views
1

私はWooCommerceのバックエンドにカスタムメタボックスを持っています。現在、私は単一の製品ページからいくつかのデータを表示するようにセットアップしました。WooCommerce製品を取得するSKU製品ページのメタボックス

私は<?php the_title(); ?>を使って製品のタイトルを表示しましたが、ACFフィールドのコンテンツを表示するのに<?php the_field('myfield'); ?>を使用しました。

私は本当にこのメタボックスにもSKUを表示できるようにしたいのですが、私が試したことはすべてページを壊してしまいます。

<?php echo $product->get_sku(); ?>を追加しようとしましたが、ページが壊れています。私は他のものをたくさん試しました。

私は、インベントリタブのskuの値を同じ管理ページのメタボックスに渡すだけで済みます。

誰でもこれを使用できますか?ありがとう。

+0

'$ product'はどこに定義しましたか? – helgatheviking

+0

以下に、私が使用したコードの部分を説明する答えを追加しました。再度、感謝します。 – minemind

答えて

3

あなたは一般的なオプション製品ページにこの方法を新しいmetabox SKUフィールドを挿入しようとすることができます:

だけ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)); 
} 

または代わりに...

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>'; 

} 

私はあなたのプラグインを使用していないとして、私はこれが動作する必要があることを保証しませんが、あなたはそれを試してみてください。

コードは、アクティブな子テーマ(またはテーマ)のfunction.phpファイル、またはすべてのプラグインファイルにあります。


参考文献:

0

$product変数をグローバル変数(global $product;)に設定しましたか?それは既に@helgathevikingそれを言及する。

のような:

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

私のメタボックスはプラグインを使って作成されています。私はプラグイン内でグローバルとして設定しようとしたが、それは助けにはなりません。 – minemind

+0

@minemindメタボックスについてではなく、あなたはskuの値を取得しようとしましたが、あなたのページを壊してしまったので、 '<?php echo $ product-> get_sku(); ?> 'global $ product;'を前に置いただけです。それは理にかなっていますか? – mlbd

+0

はい、それは私がやったことですが、それはまだページを壊してしまいます。 – minemind

2

ありがとうございます。

コードの次の部分は、プラグインの内部で作業するように提案しました。

global $post; 

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

私が$product_skuをエコーし​​たとき、値を返します。

+0

これは製品ページのどこでも動作します。ありがとうございました。 –

0

これを機能に追加します。製品ページにSKU(製品コード)を表示するには、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); 
関連する問題