如何通过WooCommerce_Account_Menu_Items添加WooCommerce菜单项时调用代码

时间:2018-12-20 作者:Andre Clements

我插入的菜单项与下面的代码示例类似https://wordpress.stackexchange.com/a/277080/137417, 但我以前没有遇到过端点,我所查看的文档和教程似乎有点超出了。。。想必,一定有办法指定一个函数或某个东西来生成输出?或者去什么地方。(还是必须通过主题中的模板文件?)

我想也许我应该创建一个查询变量:

add_filter(\'query_vars\', \'add_query_vars\');
function add_query_vars($vars) {
    $vars[] = "2nd-item";
    return $vars;
}
但当我点击链接并拨打电话时,我仍然看到一个很好的错误404

…://地点com/商店/我的帐户/第二项/

非常感谢您的指导,t.i.a。

1 个回复
SO网友:Andre Clements

需要创建一个操作挂钩“woocommerce\\u account\\u[myendpoint]\\u endpoint”:

add_action(\'woocommerce_account_\' . $endpoint . \'_endpoint\', \'my_endpoint_content\');

function my_endpoint_content() {
    //content goes here
    echo \'My content goes here\';
}

http://hookr.io/actions/woocommerce_account_key_endpoint/

因此,将几个不同的来源放在一起,要向Woocommerce我的帐户仪表板添加一个新的菜单项,需要如下内容:

    <?php

add_filter(\'woocommerce_account_menu_items\', \'add_my_menu_items\');

function add_my_menu_items($items) {
    $my_items = array(\'2nd-item\' => __(\'2nd Item\', \'[my_plugin]\'),);
    $my_items = array_slice($items, 0, 1, true) +
            $my_items +
            array_slice($items, 1, count($items), true);
    return $my_items;
}

//so, for...
$endpoint = \'2nd-item\';

add_action(\'init\', \'my_custom_endpoint\');

function my_custom_endpoint() {
    add_rewrite_endpoint(\'2nd-item\', EP_ROOT | EP_PAGES);
}

add_action(\'woocommerce_account_\' . $endpoint . \'_endpoint\', \'my_endpoint_content\');

function my_endpoint_content() {
    //content goes here
    echo \'My content goes here\';
}

add_filter(\'query_vars\', \'my_custom_query_vars\', 0);

function my_custom_query_vars($vars) {
    $vars[] = \'2nd-item\';
    return $vars;
}

add_action(\'wp_loaded\', \'my_custom_flush_rewrite_rules\');

function my_custom_flush_rewrite_rules() {
    flush_rewrite_rules();
}

相关推荐

Dynamic Endpoints

我在WordPress外部有一个数据库表,需要为其创建端点。我已经创建了一个页面/cars/ 我计划使用页面模板生成链接。我希望url看起来像/cars/camaro/ ()/cars/%model%/ ). 起初,我认为我可以使用端点,但不知道如何根据从模型表中提取的段塞使它们动态。我也不确定使用Permalink结构标签是更容易还是更好。我甚至不完全确定从哪里开始,我以前创建过“静态”端点,所以我有一个基础可以跳出,但当我到达request 我不知道该怎么办。/** * Add endpoi