Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除操作无法删除默认的挂接函数_Php_Wordpress_Woocommerce_Tabs_Product - Fatal编程技术网

Php 删除操作无法删除默认的挂接函数

Php 删除操作无法删除默认的挂接函数,php,wordpress,woocommerce,tabs,product,Php,Wordpress,Woocommerce,Tabs,Product,我正在尝试将“产品”选项卡从“woocommerce”在“单一产品”摘要之后移动到“woocommerce”在“单一产品”摘要之前。基本上,我想用一个具有图像库的选项卡替换单个产品上的产品图像,但所有其他选项卡都显示在同一个容器中。我在尝试让标签周围的容器像图片周围的容器一样工作时遇到了一些问题,但让我感到困惑的是如何从woocommerce\u after\u single\u product\u摘要部分中删除标签。我可以删除“相关产品”没有问题,从同一部分,但我所做的一切都没有改变标签 这可

我正在尝试将“产品”选项卡从“woocommerce”在“单一产品”摘要之后移动到“woocommerce”在“单一产品”摘要之前。基本上,我想用一个具有图像库的选项卡替换单个产品上的产品图像,但所有其他选项卡都显示在同一个容器中。我在尝试让标签周围的容器像图片周围的容器一样工作时遇到了一些问题,但让我感到困惑的是如何从woocommerce\u after\u single\u product\u摘要部分中删除标签。我可以删除“相关产品”没有问题,从同一部分,但我所做的一切都没有改变标签

这可以很好地删除图像:

remove_action ('woocommerce_before_single_product_summary', 
'woocommerce_show_product_images',20);
这可以很好地在其位置添加选项卡(容器问题除外):

但这似乎永远无法摆脱标签:

remove_action( 'woocommerce_after_single_product_summary', 
'woocommerce_output_product_data_tabs', 10 );
我已经检查过10是正确的数字(我发现确实有区别),但它是正确的。我跟踪了添加到的操作 woocommerce/includes/wc-template-hooks.php:

/**
 * After Single Products Summary Div.
 *
 * @see woocommerce_output_product_data_tabs()
 * @see woocommerce_upsell_display()
 * @see woocommerce_output_related_products()
 */
add_action( 'woocommerce_after_single_product_summary', 
'woocommerce_output_product_data_tabs', 10 );
add_action( 'woocommerce_after_single_product_summary', 
'woocommerce_upsell_display', 15 );
add_action( 'woocommerce_after_single_product_summary', 
'woocommerce_output_related_products', 20 );
我可以通过以下方式删除相关产品: 删除行动(“单一产品摘要后的woocommerce”和“woocommerce输出相关产品”,20)

我尝试过这个建议(在另一个主题中),钩子可能需要一个“模板重定向”,但这也不起作用。我尝试的是:

    // Trying template redirect
    function esb_product_category_filter_changes()
   {remove_action('woocommerce_after_single_product_summary', 
    'woocommerce_output_product_data_tabs', 10); 
    }
    do_action('template_redirect','esb_product_category_filter_changes');

有什么想法吗?我搜索了所有可能相关的插件,关闭了一些插件,但仍然保持相同的行为。我可以把标签放在任何我想放的地方,但我无法摆脱它们

我已经测试了店面主题:

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
并且它可以工作。因此,您的问题可能是由于您的主题或一些插件正在对此进行一些定制

检查方法:
使用以下挂钩函数,您将在单个产品摘要挂钩后获得
woocommerce\u的原始数据输出(所有回调,带有优先级和参数)。通过这种方式,您将能够看到
woocommerce\u output\u related\u products
是否与之挂钩,以及优先级是什么

此测试功能将仅在存档和产品页面中为管理员输出数据:

add_action( 'woocommerce_before_main_content', function(){
    // Only for admin user role
    if( ! current_user_can('edit_products')) return;

    global $wp_filter;
    echo '<pre>';
    print_r( $wp_filter['woocommerce_after_single_product_summary'] );
    echo '</pre>';
}, 50 );

代码进入活动子主题(或活动主题)的function.php文件。

谢谢!出色的诊断能力。我发现数据选项卡被放置在woocommerce\u single\u product\u summary中,而不是在woocommerce\u single\u product\u summary之后。我尝试从那里删除它,从$wp_过滤器['woocommerce_single_product_summary']的诊断数据显示它具有优先级41,但这不起作用。我禁用了我正在使用的额外产品选项插件和额外标签插件。仍然不起作用。然后我尝试删除所有过滤器(“woocommerce\u single\u product\u summary”);它还在那儿!总主题,下一个调查。我想这应该是一个简单的后续问题:在我的子主题的functions.php之后添加什么钩子?这不应该是队伍的终点吗?@JohnJ谢谢你。你可以在问题的末尾添加一个编辑,告诉你如何调试并找到正确的方法…这对其他人也很有用。我已经发送了一个问题来支持我正在使用的主题,“Total”主题。似乎他们对产品页面的各个方面都有自己的机制,这超出了这个问题的范围。谢谢大家的帮助。我终于找到了wpexplorer themes.com**“Total”主题的真正解决方案。选项卡是通过/wp content/themes/Total/framework/3rd party/woocommerce/woo-config.php中的代码有条件地移动的。代码是:
//移动选项卡//在meta之后添加,如果('right'==wpex_get_mod('woo_product_Tabs_position'){remove_action'(“woocommerce”在“单一产品”摘要之后,“woocommerce”输出“产品”数据选项卡,10);添加操作(“woocommerce”单一“产品”摘要,“woocommerce”输出“产品”数据选项卡,41);}
add_action( 'woocommerce_before_main_content', function(){
    // Only for admin user role
    if( ! current_user_can('edit_products')) return;

    global $wp_filter;
    echo '<pre>';
    print_r( $wp_filter['woocommerce_after_single_product_summary'] );
    echo '</pre>';
}, 50 );
add_action( 'woocommerce_after_single_product_summary', 'removing_product_tabs', 2 );
function removing_product_tabs(){
    remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
}