我已经从Shophistic Lite
主题创建了儿童主题。
我想删除子主题中的操作。
// wp-content \ plugins \ woocommerce \ templates \ content-product.php ...
/**
* woocommerce_shop_loop_item_title hook.
*
* @hooked woocommerce_template_loop_product_title - 10
*/
do_action( 'woocommerce_shop_loop_item_title' );
/**
* woocommerce_after_shop_loop_item_title hook.
*
* @hooked woocommerce_template_loop_rating - 5
* @hooked woocommerce_template_loop_price - 10
*/
do_action( 'woocommerce_after_shop_loop_item_title' );
/**
* woocommerce_after_shop_loop_item hook.
*
* @hooked woocommerce_template_loop_product_link_close - 5
* @hooked woocommerce_template_loop_add_to_cart - 10
*/
do_action( 'woocommerce_after_shop_loop_item' );
...
// \ wp-content \ themes \ shophistic-lite \ framework \ functions \ woocommerce_support.php
...
/**
* Adds the Switch View buttons
*/
function shophistic_lite_show_attribute() {
...
}
add_action( 'woocommerce_after_shop_loop_item_title', 'shophistic_lite_show_attribute', 15 );
...
// \ wp-content \ themes \ shophistic-lite-child \ functions.php
...
function remove_functions() {
remove_action( 'woocommerce_after_shop_loop_item_title', 'shophistic_lite_show_attribute', 15 );
}
add_action('woocommerce_after_shop_loop_item' , 'remove_functions' );
...
我是通过这篇文章做到的:https://code.tutsplus.com/tutorials/a-guide-to-overriding-parent-theme-functions-in-your-child-theme--cms-22623
但它对我没用。 shophistic_lite_show_attribute
函数仍在执行。
请帮我解决这个问题。
答案 0 :(得分:4)
您应该尝试使用 'init'
挂钩来执行删除操作,以便在初始化时将其删除:
function child_custom_actions() {
remove_action( 'woocommerce_after_shop_loop_item_title', 'shophistic_lite_show_attribute', 15 );
}
add_action( 'init' , 'child_custom_actions' );
此代码包含活动子主题(或主题)的function.php文件或任何插件文件。
此代码已经过测试并正常运行 (见下文)。
与您的评论相关的更新:
我已在测试服务器中上传了您的主题 Shophistic Lite
,并创建了一个子主题。
我暂时更改 woocommerce_support.php
文件中主题上的功能,使其显示内容,而不显示任何内容特殊设置需要(并保存)这种方式:
/**
* Adds the Switch View buttons
*/
function shophistic_lite_show_attribute() {
echo '<p>BLA BLA</p>';
}
add_action( 'woocommerce_after_shop_loop_item_title', 'shophistic_lite_show_attribute', 15 );
它显示在商店页面上:
然后我在儿童主题的 function.php
文件中添加了上面第一个代码段的代码(与您尝试使用&#39; init&#39相同) ;钩子),它只是完美地运作,删除了&#34; BLA BLA&#34;。
所以你可能想要删除一些不是由这个钩子生成的东西......
答案 1 :(得分:0)
就我而言,我试图从单个产品页面中删除相关产品部分。这不是默认的相关产品部分,它特定于我的主题(因此我不得不从父主题中删除操作)。
使用wp_loaded
钩子可以正常工作,而上面提到的init
钩子则无法工作。
所以最后,我的子主题中的这段代码运行良好:
function child_custom_actions() {
remove_action( 'woocommerce_after_single_product', 'woocommerce_output_related_products', 20 );
}
add_action( 'wp_loaded' , 'child_custom_actions' );
警告: woocommerce_after_single_product
钩子不是woocommerce相关产品部分的默认钩子,它特定于我的主题,您可能需要使用woocommerce_after_single_product_summary
钩子。>