Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “我的帐户自定义终结点”菜单项_Php_Wordpress_Woocommerce_Hook Woocommerce_Endpoint - Fatal编程技术网

Php “我的帐户自定义终结点”菜单项

Php “我的帐户自定义终结点”菜单项,php,wordpress,woocommerce,hook-woocommerce,endpoint,Php,Wordpress,Woocommerce,Hook Woocommerce,Endpoint,我正在做一个项目,我的账户页面是一个主页。因此,我所做的就是创建了一个包含短代码[woocommerce\u my\u account]的页面,并从Dashboard->Settings->Reading创建了这个页面主页。一切正常。我也有这样的工作端点: mydomain.com/orders mydomain.com/edit-address 但是,当我创建自定义myaccount端点时,我面临着麻烦。我用传统的方式来做: add_action('woocommerce_account_

我正在做一个项目,我的账户页面是一个主页。因此,我所做的就是创建了一个包含短代码
[woocommerce\u my\u account]
的页面,并从Dashboard->Settings->Reading创建了这个页面主页。一切正常。我也有这样的工作端点:

  • mydomain.com/orders
  • mydomain.com/edit-address
但是,当我创建自定义myaccount端点时,我面临着麻烦。我用传统的方式来做:

add_action('woocommerce_account_custom-endpoint_endpoint', function(){
    echo 'hello'; 
} );

add_action('init', function() {
    add_rewrite_endpoint('custom-endpoint', EP_ROOT | EP_PAGES); 
});
但是mydomain.com/custom-endpoint并没有指向我的帐户页面,而是指向index.php或page.php(WordPress模板层次结构)


我很想知道为什么会这样?

更新:

重要提示:您首先需要在中声明您的主页为“我的帐户”页面:
WooCommerce设置>高级>我的帐户页面字段

使用以下命令:

// Enable endpoint
add_filter( 'woocommerce_get_query_vars', 'myaccount_custom_endpoint_query_var' );
function myaccount_custom_endpoint_query_var( $query_vars ) {
    $query_vars['custom-endpoint'] = 'custom-endpoint';

    return $query_vars;
}

// Endpoint displayed content
add_action('woocommerce_account_custom-endpoint_endpoint', 'display_custom_endpoint_content' ); 
function display_custom_endpoint_content(){
    echo '<p>' . __("hello") . '</p>';
}
代码进入活动子主题(或活动主题)的functions.php文件

编辑:钩子
woocommerce\u get\u query\u vars
是必需的,并替换处理
add\u rewrite\u endpoint()
的函数,该函数不再需要了(感谢@Jitu)

如果需要,您可以通过进入Wordpress设置>永久链接和“保存更改”刷新重写规则


已测试并运行。

更新:

重要提示:您首先需要在中声明您的主页为“我的帐户”页面:
WooCommerce设置>高级>我的帐户页面字段

使用以下命令:

// Enable endpoint
add_filter( 'woocommerce_get_query_vars', 'myaccount_custom_endpoint_query_var' );
function myaccount_custom_endpoint_query_var( $query_vars ) {
    $query_vars['custom-endpoint'] = 'custom-endpoint';

    return $query_vars;
}

// Endpoint displayed content
add_action('woocommerce_account_custom-endpoint_endpoint', 'display_custom_endpoint_content' ); 
function display_custom_endpoint_content(){
    echo '<p>' . __("hello") . '</p>';
}
代码进入活动子主题(或活动主题)的functions.php文件

编辑:钩子
woocommerce\u get\u query\u vars
是必需的,并替换处理
add\u rewrite\u endpoint()
的函数,该函数不再需要了(感谢@Jitu)

如果需要,您可以通过进入Wordpress设置>永久链接和“保存更改”刷新重写规则


已测试并正常工作。

您好@VincenzoDiGaetano我认为这是不相似的。我忘了提及是否从主页中删除我的帐户页面我的自定义端点工作正常。我是说mydomain.com/myaccount/custom-endpoint正常工作,但是mydomain.com/custom-endpoint不工作,
mydomain.com/custom-endpoint
页面不工作,但它是正确的。您正在使用在WooCommerce“My Account”页面中添加内容的钩子。mydomain.com正在为myaccount页面提供服务,因此如果添加带有“WooCommerce\u Account\u$key\u endpoint”的端点,则mydomain.com/$key不应为该自定义端点提供服务,因为其他默认端点(如mydomain.com/orders)工作正常。但它在服务index.phphi@VincenzoDiGaetano我认为这是不相似的。我忘了提及是否从主页中删除我的帐户页面我的自定义端点工作正常。我是说mydomain.com/myaccount/custom-endpoint正常工作,但是mydomain.com/custom-endpoint不工作,
mydomain.com/custom-endpoint
页面不工作,但它是正确的。您正在使用在WooCommerce“My Account”页面中添加内容的钩子。mydomain.com正在为myaccount页面提供服务,因此如果添加带有“WooCommerce\u Account\u$key\u endpoint”的端点,则mydomain.com/$key不应为该自定义端点提供服务,因为其他默认端点(如mydomain.com/orders)工作正常。但是当我使用这个钩子“woocommerce\u get\u query\u vars”时,它正在服务index.phpThanks,它正在工作。仍然想知道当myaccount不是根url时,没有这个钩子自定义终结点可以正常工作。@Jitu因为wooCommerce默认终结点已经在核心代码中定义为query_vars,所以对于自定义my account终结点来说,这样做很好,例如,只有定义了查询变量,才会显示端点标题。谢谢,我得到了答案。我还有一个问题,就是
add_rewrite_端点('custom-endpoint',EP_ROOT | EP_页面)是必需的吗?当我使用“woocommerce\u get\u query\u vars”时,我可以看到我的自定义端点在没有此端点的情况下可以正常工作。抱歉,我不能同意。我做到了,而且我正在使用
flush_rewrite_rules()在测试的
init
钩子下,它工作正常。另外,我已经删除了.htaccess并重新生成了它。它仍然在工作。谢谢,它在工作,当我使用这个钩子“woocommerce\u get\u query\u vars”时。仍然想知道当myaccount不是根url时,没有这个钩子自定义终结点可以正常工作。@Jitu因为wooCommerce默认终结点已经在核心代码中定义为query_vars,所以对于自定义my account终结点来说,这样做很好,例如,只有定义了查询变量,才会显示端点标题。谢谢,我得到了答案。我还有一个问题,就是
add_rewrite_端点('custom-endpoint',EP_ROOT | EP_页面)是必需的吗?当我使用“woocommerce\u get\u query\u vars”时,我可以看到我的自定义端点在没有此端点的情况下可以正常工作。抱歉,我不能同意。我做到了,而且我正在使用
flush_rewrite_rules()在测试的
init
钩子下,它工作正常。另外,我已经删除了.htaccess并重新生成了它。它仍在工作。