Php 更改标题钩子时,第一个项目不会';不变

Php 更改标题钩子时,第一个项目不会';不变,php,wordpress,woocommerce,hook-woocommerce,Php,Wordpress,Woocommerce,Hook Woocommerce,我有一种奇怪的行为,我不明白 我已经更改了woocommerce\u shop\u loop\u item\u标题挂钩,以添加指向产品标题的链接。这是我在functions.php中的代码 // Add HREF TO TITLE function abChangeProductsTitleHook(){ remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title'

我有一种奇怪的行为,我不明白

我已经更改了woocommerce\u shop\u loop\u item\u标题挂钩,以添加指向产品标题的链接。这是我在functions.php中的代码

// Add HREF TO TITLE
function abChangeProductsTitleHook(){
    remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
    add_action('woocommerce_shop_loop_item_title', 'abChangeProductsTitle', 10 );
}
add_action( 'woocommerce_shop_loop_item_title', 'abChangeProductsTitleHook' );
function abChangeProductsTitle() {
    echo '<h2 class="woocommerce-loop-product_title"><a href="'.get_the_permalink().'">' . get_the_title() . '</a></h2>';
}
//将HREF添加到标题
函数abChangeProductsTitleHook(){
删除操作('woocommerce\u shop\u loop\u item\u title'、'woocommerce\u template\u loop\u product\u title',10);
添加动作('woocommerce\u shop\u loop\u item\u title','abChangeProductsTitle',10);
}
添加动作('woocommerce\u shop\u loop\u item\u title','abChangeProductsTitleHook');
函数abChangeProductsTitle(){
回声';
}
它适用于除第一款产品外的所有产品

我还对另一个钩子做了类似的更改,将缩略图图像更改为背景图像,而且这个钩子在第一个产品上不起作用。它总是第一个产品,即使我改变了产品的顺序

下面是页面上第一行产品的屏幕截图,第一行的显示方式不同

如果有人知道这个问题或者能给我指出正确的方向,那将非常有帮助

多谢各位
Alex

您删除和添加
woocommerce\u shop\u loop\u item\u title
的方式就是问题所在。这样试试看

remove_action( 'woocommerce_shop_loop_item_title','woocommerce_template_loop_product_title', 10 );
add_action('woocommerce_shop_loop_item_title', 'abChangeProductsTitle', 10 );
function abChangeProductsTitle() {
    echo '<h2 class="woocommerce-loop-product_title"><a href="'.get_the_permalink().'">' . get_the_title() . '</a></h2>';
}
remove_action('woocommerce_shop_loop_item_title','woocommerce_template_loop_product_title',10);
添加动作('woocommerce\u shop\u loop\u item\u title','abChangeProductsTitle',10);
函数abChangeProductsTitle(){
回声';
}

虽然接受的答案有效,但为什么我们必须
删除
标题,然后再
添加
标题?首先,我们可以简单地
过滤它

add_filter('the_title','your_shop_custom_title',20,2);
使用您的\u店铺\u自定义\u标题(\u标题,$id)
{
如果(is_shop()&&get_post_type($id)=='product')://仅在商店页面上运行
$the_title='';
endif;
返回$U标题;
}

我希望您能理解问题所在:)我想我知道问题所在,但现在我可以查一查,准确地知道问题所在:)谢谢您,我可以帮忙:)