我正在添加一个“对话”端点,以便它出现在我在woocommerce的帐户中
add_action( \'init\', array($this, \'custom_endpoints\') );
function custom_endpoints() {
add_rewrite_endpoint( \'conversations\', EP_PERMALINK | EP_PAGES );
}
使用“普通”的永久链接结构可以很好地工作,但如果使用帖子名结构,我的帐户中的链接将转到
my-account/conversations.
上面写着“找不到页面”。然而
my-account/?conversations
确实有效。
这是什么原因?
这是WooCommerce菜单项的代码:
add_filter( \'woocommerce_account_menu_items\', array($this, \'custom_items\'), 10, 1 );
function custom_items( $items ) {
$items = array_slice($items, 0, 2, true) +
array("conversations" => esc_html__( \'Conversations\', \'domain\' )) +
array_slice($items, 2, count($items)-2, true);
return $items;
}
SO网友:Jacob Peattie
我会避免使用add_rewrite_endpoint()
直接在WooCommerce中注册帐户页终结点。WooCommerce有一个过滤器,您可以使用它来确保其他一切正常工作,例如端点标题过滤器和调用is_wc_endpoint_url()
.
因此,将端点与woocommerce_get_query_vars
过滤器:
add_filter(
\'woocommerce_get_query_vars\',
function( $query_vars ) {
$query_vars[\'conversations\'] = \'conversations\';
return $query_vars;
}
);
请注意,与
query_vars
过滤器,添加到数组时需要使用键。
现在,您可以使用woocommerce_account_conversations_endpoint
挂钩:
add_action(
\'woocommerce_account_conversations_endpoint\',
function() {
// Page content here.
}
);
标题和
woocommerce_endpoint_conversations_title
过滤器:
add_filter(
\'woocommerce_endpoint_conversations_title\',
function( $title ) {
$title = \'Conversations\';
return $title;
}
);
您可以继续按您的方式将其添加到帐户菜单中。