为WooCommerce产品添加动态自定义标签

时间:2019-02-27 10:38:48

标签: php wordpress woocommerce product hook-woocommerce

我正在寻找一种为WooCommerce中的产品页面添加自定义标签的解决方案。我已经在下面找到了一些类似此代码段的解决方案。但是,所有这些都是针对静态内容的。是否可以为产品页面创建自定义标签,并且可以在管理产品页面中单独设置内容?我知道有相应的插件,但是我正在尝试使用插件找到解决方案。

add_filter( 'woocommerce_product_tabs', 'woo_custom_product_tabs' );
function woo_custom_product_tabs( $tabs ) {

    // 1) Removing tabs

    unset( $tabs['description'] );              // Remove the description tab
    // unset( $tabs['reviews'] );               // Remove the reviews tab
    unset( $tabs['additional_information'] );   // Remove the additional information tab


    // 2 Adding new tabs and set the right order

    //Attribute Description tab
    $tabs['attrib_desc_tab'] = array(
        'title'     => __( 'Desc', 'woocommerce' ),
        'priority'  => 100,
        'callback'  => 'woo_attrib_desc_tab_content'
    );

    // Adds the qty pricing  tab
    $tabs['qty_pricing_tab'] = array(
        'title'     => __( 'Quantity Pricing', 'woocommerce' ),
        'priority'  => 110,
        'callback'  => 'woo_qty_pricing_tab_content'
    );

    // Adds the other products tab
    $tabs['other_products_tab'] = array(
        'title'     => __( 'Other Products', 'woocommerce' ),
        'priority'  => 120,
        'callback'  => 'woo_other_products_tab_content'
    );

    return $tabs;

}

// New Tab contents

function woo_attrib_desc_tab_content() {
    // The attribute description tab content
    echo '<h2>Description</h2>';
    echo '<p>Custom description tab.</p>';
}
function woo_qty_pricing_tab_content() {
    // The qty pricing tab content
    echo '<h2>Quantity Pricing</h2>';
    echo '<p>Here\'s your quantity pricing tab.</p>';
}
function woo_other_products_tab_content() {
    // The other products tab content
    echo '<h2>Other Products</h2>';
    echo '<p>Here\'s your other products tab.</p>';
}

2 个答案:

答案 0 :(得分:0)

可以通过woocommerce_product_tabs过滤器添加自定义标签。
为了为您的产品创建自定义数据字段,我建议使用ACF

1。添加新字段

  • 您需要add a new field购买产品并添加名称参数,例如custom_detail。 (我们在get_field函数内部的代码中使用了此代码)。您可以更改其类型,例如 textarea WYSIWYG 。在角色部分中,设置帖子类型|等于|产品
  • 现在在“编辑产品”屏幕上,您可以找到新字段。

2。显示自定义标签

add_filter( 'woocommerce_product_tabs', 'woo_custom_product_tabs' );
function woo_custom_product_tabs( $tabs ) {
  $tabs = array(
    'title' => 'Custom tab',
    'priority' => 20,
    'callback' => 'get_custom_product_tab_content',
  );
  return $tabs;
}

function get_custom_product_tab_content () {
  the_field('custom_detail');
}

答案 1 :(得分:0)

我一直在搜索,直到找到一个示例,该示例在该“回调”函数中包含变量-这是最干净的示例

/********************************************************
**  Remove, Create new product tabs and Prioritize
********************************************************/
add_filter( 'woocommerce_product_tabs', 'sgx_recreate_product_tabs', 98 );
function sgx_recreate_product_tabs( $tabs ) {

    global $product;

    $productabs = get_field('prodtabs', $product->get_id());

    unset( $tabs['description'] );          // Remove description tab
    unset( $tabs['additional_information'] );   // Remove additional tab
    $tabs['reviews']['priority'] = 50;          // push reviews priority back


    // loop through tabs created using ACF in this product backend.
    // i created a repeater with 2 fields - tabtitle & tabtxt
    if( !empty($productabs['tabs']) ) {
        $tabCounter = 1;

        foreach($productabs['tabs'] as $ptab) {
            $tabs['tab'.$tabCounter] = array(
                'title'     => $ptab['tabtitle'],
                'text'      => $ptab['tabtxt'],
                'priority'  => $tabCounter,
                'callback'  => 'sgx_custom_productab'
            );

            $tabCounter++;
        }
    }

    return $tabs;
}


    function sgx_custom_productab($slug, $tab) {
        echo ( !empty($tab['text']) ? $tab['text'] : '' );
    }

说明:
首先,我使用ACF在wp后端中创建了一些标签...现在我想动态添加这些标签,但是该回调函数不是动态的....

但是,我可以使用一些(显然)变量,因此我只是将需要和完成的数据添加到$ tab数组中(在第一个函数中)。