在产品页面元框中获取 WooCommerce 产品 SKU
Get WooCommerce product SKU in product pages meta box
我在 WooCommerce 的后端有一个自定义元框。目前我已将其设置为显示单个产品页面中的一些数据。
我使用 <?php the_title(); ?>
显示产品的标题,我使用 <?php the_field('myfield'); ?>
显示 ACF 字段中的一些内容。
我真的希望也能在此元框中显示 SKU,但我尝试过的所有操作都破坏了页面。
我尝试添加 <?php echo $product->get_sku(); ?>
但它破坏了页面。我已经尝试了很多其他的东西。
我只需要将库存选项卡上的 sku 值传递到同一管理页面上的元框。
其他人可以吗?谢谢
您是否将 $product
变量设置为全局变量 (global $product;
)? @helgatheviking 已经提到了它。
喜欢:
global $product;
echo 'SKU: ' . $product->get_sku();
您可以尝试以这种方式在常规选项产品页面上插入一个新的 metabox 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
它returns值时。
将此添加到您的 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);
我在 WooCommerce 的后端有一个自定义元框。目前我已将其设置为显示单个产品页面中的一些数据。
我使用 <?php the_title(); ?>
显示产品的标题,我使用 <?php the_field('myfield'); ?>
显示 ACF 字段中的一些内容。
我真的希望也能在此元框中显示 SKU,但我尝试过的所有操作都破坏了页面。
我尝试添加 <?php echo $product->get_sku(); ?>
但它破坏了页面。我已经尝试了很多其他的东西。
我只需要将库存选项卡上的 sku 值传递到同一管理页面上的元框。
其他人可以吗?谢谢
您是否将 $product
变量设置为全局变量 (global $product;
)? @helgatheviking 已经提到了它。
喜欢:
global $product;
echo 'SKU: ' . $product->get_sku();
您可以尝试以这种方式在常规选项产品页面上插入一个新的 metabox 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
它returns值时。
将此添加到您的 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);