如果我正确理解了你的评论,那么解决方法很简单。在StackOverflow答案的顶部有一行:
add_action( \'woocommerce_before_shop_loop\', \'ps_selectbox\', 25 );
该行所做的是获取您创建的函数(
ps_selectbox
) 它把它挂在
woocommerce_before_shop_loop
行动挂钩。WooCommerce中到处都是这些操作挂钩,专门用于此目的,因此我们可以添加自己的功能和更改,而无需编辑其核心代码。
所以如果你想用StackOverflow的答案解决的唯一问题(https://stackoverflow.com/a/55292815) 要更改下拉列表的显示位置,则只需更改第一行:
add_action( \'woocommerce_after_shop_loop\', \'ps_selectbox\', 5 );
有两件事发生了变化。1) 我将操作更改为
woocommerce_after_shop_loop
, 这将使其显示在产品下方。2) 我将add\\u操作的优先级更改为
5
而不是
25
.
我更改了优先级,因为如果我们去查看默认值archive-product.php
作为WooCommerce的一部分捆绑的模板,我们看到:
/**
* Hook: woocommerce_after_shop_loop.
*
* @hooked woocommerce_pagination - 10
*/
do_action( \'woocommerce_after_shop_loop\' );
在评论中,它告诉我们
woocommerce_pagination
正被(WooCommerce)卷入同样的行动中,其优先级为
10
.
所以通过添加函数ps_selectbox
在5
它出现在内置WooCommerce分页之前。
如果希望它在woocommerce分页之后出现,可以将优先级值更改为15
或20
. 您可以决定是否要以5或10的增量跳转。
如果你通过archive-product.php
您会注意到,所有动作挂钩都列出了已经挂接到其中的其他函数,优先级间隔为10秒,如下所示:
/**
* Hook: woocommerce_before_shop_loop.
*
* @hooked woocommerce_output_all_notices - 10
* @hooked woocommerce_result_count - 20
* @hooked woocommerce_catalog_ordering - 30
*/
这是WooCommerce有意做到的,这样您/其他开发人员就可以在默认的WooCommerce功能之间插入自己的功能。它们在功能挂钩之间留下9个点,供您自己挂钩。