问题描述
add_filter( 'the_title','woo_title_order_received',10,2 );
function woo_title_order_received( $title,$id ) {
if ( function_exists( 'is_order_received_page' ) &&
is_order_received_page() && get_the_ID() === $id ) {
$title = "Thank you,good luck!";
}
return $title;
}
然而,由于Too few arguments to function woo_title_order_received()
,它会导致商店页面出现致命错误。上网查了一下,发现the_title
不对,应该是get_the_title
。如果我将其更改为致命错误消失,但它不再更改收到订单页面上的标题。
我在网上找到的其他片段都没有奏效,我不明白为什么上述内容会阻止商店页面工作。有什么想法吗?
解决方法
尝试将 $id
参数设置为 null
(在未定义时很有用):
add_filter( 'the_title','woo_title_order_received',10,2 );
function woo_title_order_received( $title,$id = null ) {
if ( function_exists( 'is_order_received_page' ) &&
is_order_received_page() && get_the_ID() === $id ) {
$title = "Thank you,good luck!";
}
return $title;
}
它可以工作......
,不知道为什么你应该使用带有多个 if 条件的 the_title
WordPress 钩子,而 WooCommerce 有特定的钩子。
'woocommerce_endpoint_' . $endpoint . '_title'
过滤器钩子允许更改 Order received
标题。
所以你得到:
/**
* @param string $title Default title.
* @param string $endpoint Endpoint key.
* @param string $action Optional action or variation within the endpoint.
*/
function filter_woocommerce_endpoint_order_received_title( $title,$endpoint,$action ) {
$title = __( 'Thank you,good luck!','woocommerce' );
return $title;
}
add_filter( 'woocommerce_endpoint_order-received_title','filter_woocommerce_endpoint_order_received_title',3 );