在产品页面元框中获取WooCommerce产品SKU

时间:2016-10-12 23:32:46

标签: php wordpress woocommerce product sku

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

我已使用<?php the_title(); ?>显示产品标题,并且我已使用<?php the_field('myfield'); ?>显示来自ACF字段的部分内容。

我真的希望能够在这个元框中显示SKU,但我尝试的所有内容都会破坏页面。

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

我只需要将库存标签上的sku值传递到同一个管理页面上的元框。

其他人可以这个吗?感谢。

4 个答案:

答案 0 :(得分:4)

您可以尝试以这种方式在常规选项产品页面上插入新的元数据库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>';

}

由于我没有使用您的插件,我并不保证这应该有用,但您应该尝试一下。

代码进入活动子主题(或主题)的function.php文件或任何插件文件中。

参考文献:

答案 1 :(得分:2)

谢谢。

现在,您建议在插件内部使用以下代码部分。

global $post;

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

当我回显$product_sku时,它返回值。

答案 2 :(得分:0)

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

像:

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

答案 3 :(得分: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();
}

enter image description here

enter image description here

如果您对使用产品代码而不是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);