当前位置: 首页 > 知识库问答 >
问题:

在WooCommerce简短描述前显示自定义产品字段

艾子石
2023-03-14

在简短描述之前,我在WooCommerce中添加一个新字段时遇到了一个问题。

我使用脚本在functions.php和我的新自定义字段显示正确,但:

  • 使用脚本时,简短描述消失,新字段显示良好。
  • 我可以编辑产品页面上某个字段的内容,但不能删除它。它始终是最后一个值

如何显示此自定义字段而不删除产品简短说明?
如何重置此自定义字段内容?

这是我的代码:

// Add a custom Field
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );

function woo_add_custom_general_fields() {

  global $woocommerce, $post;

    woocommerce_wp_text_input( 
        array( 
            'id'          => '_text_field', 
            'label'       => __( 'Termin dostawy', 'woocommerce' ), 
            'placeholder' => 'np: 7 dni',
            'desc_tip'    => 'true',
            'description' => __( 'Wpisz przewidywany termin dostawy, np: 7 dni.', 'woocommerce' ) 
        )
    );

}

// Save the custom field
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields_save( $post_id ){
    $woocommerce_text_field = $_POST['_text_field'];
    if( ! empty( $woocommerce_text_field ) )
        update_post_meta( $post_id, '_text_field', esc_attr( $woocommerce_text_field ) );

}

// Display the custom field
add_action('woocommerce_short_description', 'magik_custom_text', 10, 1);
function magik_custom_text()
{
     global $product;

     global $woocommerce, $post;
     echo "Termin dostawy: ".get_post_meta( $post->ID, '_text_field', true );
}

负责显示的功能:

add_action('woocommerce_short_description', 'magik_custom_text', 10, 1);
function magik_custom_text()
{

共有1个答案

闻人弘雅
2023-03-14

更新2:

1)你应该把它添加到简短的描述中,而不是替换它...

正确的方法是在简短描述之前的woocommerce\u single\u product\u summary阳钩子中钩住自定义函数(使用11到19之间的优先级):

add_action('woocommerce_single_product_summary', 'magik_custom_text', 18);
function magik_custom_text()
{
    global $post;
    $field_value = get_post_meta( $post->ID, '_text_field', true );
    // Displaying the custom field only when is set with a value
    if( ! empty( $field_value ) )
        echo '<p>' . __('Termin dostawy: ', 'woocommerce') . $field_value . '</p>';
}

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

测试和工作。所以你会得到这个:

2) 要删除产品自定义字段的内容,您需要替换:

 if( ! empty( $woocommerce_text_field ) ) 

作者:

 if( isset( $woocommerce_text_field ) )

在这个钩子函数中:

add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields_save( $post_id ){
    $woocommerce_text_field = $_POST['_text_field'];
    if( isset( $woocommerce_text_field ) )
        update_post_meta( $post_id, '_text_field', esc_attr( $woocommerce_text_field ) );

}
 类似资料:
  • 我已经生成了一个自定义的类别页面,该类别下的产品显示成功,但描述不显示在单个产品上。 请在这方面帮助我。

  • 在产品页面中,每个产品都有一个图像,并且下面有两个子标题:标题和到产品类别的链接。我想用产品的简短描述替换这个产品类别字段。 我查看了Woocomece文件夹中的每个php文件,但找不到要编辑的行。 谢谢你的帮助。

  • 我成功地在后端的产品变化中的WooCommerce中创建了一个ACF自定义字段。该字段在每个变化中正确显示。 但是在编辑变体中的此字段或其他字段后,我无法再保存整个变体选项卡。加载/保存指示器圆圈继续无限旋转。并且定制字段未显示在前端的单个产品变体中。 我所做的是将以下代码添加到我的: 任何帮助都将不胜感激。

  • 我需要在自定义快捷码中显示全局$product。我正在尝试创建一个$product的手动布局,其中只包含“C类”产品。 所以在我的短代码中我声明 但我的函数返回空$产品 当我使用$woocommerce时,我会获取数据,但无法定位我的产品。 如何在自定义快捷码上获取所有产品,以手动显示和控制产品布局?

  • 是否有一种方法可以在WooCommerce订单页面的每个产品下显示我的自定义SKU? 当我编辑产品时,自定义sku显示良好,但它不会显示在产品的订单页面中。我需要在订单上显示此信息,以便Zapier可以将其与产品的Visma帐户软件ArticleID匹配。 此尝试基于如何向WooCommerce产品添加(第二个)自定义sku字段的解决方案?

  • 在WooCommerce中,我使用这个胎面的代码,用一个简短的代码显示定义的产品ID中的产品价格。但它并不真的像我想要的那样。代码如下: 我对php编码知识很差。但我看到另一个线程显示产品价格: 我已经尝试将这些代码混合到大代码中,并替换了……它起作用了,但我想要的是显示价格的东西是这样的: 我需要在价格后面显示货币符号,像:(中间有空格),而不是像。 我怎样才能使它以一种干净的正常方式工作?