我正在寻找一种为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>';
}
答案 0 :(得分:0)
可以通过woocommerce_product_tabs
过滤器添加自定义标签。
为了为您的产品创建自定义数据字段,我建议使用ACF。
custom_detail
。 (我们在get_field
函数内部的代码中使用了此代码)。您可以更改其类型,例如 textarea 或 WYSIWYG 。在角色部分中,设置帖子类型|等于|产品。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数组中(在第一个函数中)。