簡體   English   中英

在產品頁面元框中獲取WooCommerce產品SKU

[英]Get WooCommerce product SKU in product pages meta box

我在WooCommerce的后端有一個自定義元框。 目前我已將其設置為顯示單個產品頁面中的一些數據。

我用<?php the_title(); ?> <?php the_title(); ?>顯示產品的標題,我使用了<?php the_field('myfield'); ?> <?php the_field('myfield'); ?>顯示來自ACF字段的一些內容。

我真的希望能夠在這個元框中顯示SKU,但我嘗試過的所有東西都打破了頁面。

我嘗試添加<?php echo $product->get_sku(); ?> <?php echo $product->get_sku(); ?>它打破了頁面。 我已經嘗試過其他一些東西了。

我只需要將庫存選項卡上的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 ) );
}

或者只是顯示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">';

    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文件中,或者放在任何插件文件中。


參考文獻:

謝謝。

現在,您建議在插件內部使用以下代碼部分。

global $post;

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

當我回顯$product_sku它返回值。

您是否將$product變量設置為全局變量( global $product; )? 已經@helgatheviking提到它了。

喜歡:

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

將其添加到您的functions.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();
}

在此輸入圖像描述

在此輸入圖像描述

如果您對使用產品代碼而不是SKU感到驚訝; 我使用以下代碼按產品代碼替換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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM