2

我在 WooCommerce 的后端有一个自定义元框。目前,我已将其设置为显示来自单个产品页面的一些数据。

我习惯于<?php the_title(); ?>显示产品的标题,也习惯于<?php the_field('myfield'); ?>显示 ACF 字段中的一些内容。

我也真的希望能够在此元框中显示 SKU,但我尝试的所有操作都会破坏页面。

我尝试添加<?php echo $product->get_sku(); ?>,它打破了页面。我已经尝试了很多其他的东西。

我只需要将库存选项卡上的 sku 值传递到同一管理页面上的元框。

其他人可以吗?谢谢。

4

4 回答 4

5

您可以尝试以这种方式在常规选项产品页面上插入新的元框 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……</p>

在此处输入图像描述

使用此代码:

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 文件中,也位于任何插件文件中。


参考:

于 2016-10-13T04:01:06.783 回答
4

谢谢你。

您建议它现在在插件内部工作的以下代码部分。

global $post;

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

当我回$product_sku显它返回值。

于 2016-10-13T16:52:57.170 回答
0

将此添加到您的 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);
于 2017-05-21T16:41:37.500 回答
0

您是否将$product变量设置为全局变量(global $product;)?@helgatheviking 已经提到了。

喜欢:

global $product;
echo 'SKU: ' . $product->get_sku();
于 2016-10-13T00:41:18.080 回答