首页 文章

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

提问于
浏览
2

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

我用 <?php the_title(); ?> 来显示产品的 Headers ,我用 <?php the_field('myfield'); ?> 来显示ACF字段的一些内容 .

我真的希望能够在这个元框中显示SKU,但我尝试过的所有东西都打破了页面 .

我尝试添加 <?php echo $product->get_sku(); ?> 并打破了页面 . 我已经尝试过其他一些东西了 .

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

其他人可以这个吗?谢谢 .

4 回答

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


    参考文献:

  • 2

    谢谢 .

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

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

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

  • 0

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

    喜欢:

    global $product;
    echo 'SKU: ' . $product->get_sku();
    
  • 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);
    

相关问题