在WooCommerce中设置“我的帐户"自定义项终结点标题 [英] Set My Account custom items endpoints titles in WooCommerce

查看:67
本文介绍了在WooCommerce中设置“我的帐户"自定义项终结点标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过成功添加新端点自定义woocommerce帐户页面.这个新端点的标题是我的帐户".默认标题.我也想自定义标题.我尝试使用钩子"woocommerce_endpoint_ {endpoints} _title",该钩子在默认终结点上完美运行,但似乎在自定义终结点上不起作用:

I customise my woocommerce account pages by adding new endpoints successfully. The title oh this new endpoints is "My account" default title. I would like to customize the title as well. I tried with the hook "woocommerce_endpoint_{endpoints}_title", which works perfectly on defaults endpoints, but it doesn't seem to work on custom endpoint :

我的自定义端点(不起作用):

My custom endpoint (not working):

add_filter( 'woocommerce_endpoint_favoris_title', 'change_my_account_favoris_title', 10, 2 );
function change_my_account_favoris_title( $title, $endpoint ) {
    $title = __( "Tests", "woocommerce" );
    return $title;
}

自定义端点

默认的endpooint示例工作方式:

Default endpooint example working:

add_filter( 'woocommerce_endpoint_edit-account_title', 'change_my_account_edit_title', 10, 2 );
function change_my_account_edit_title( $title, $endpoint ) {
    $title = __( "Tests", "woocommerce" );
    return $title;
}

默认端点

暂时无法在此找到任何东西,谢谢您的时间

Can't find anything on this for now, Thanks for your time

我对woocommerce帐户部分的完整了解:

My complete hooks of my woocommerce account section:

1/创建端点:

add_filter ('woocommerce_account_menu_items', 'custom_log_history_link', 40);
function custom_log_history_link($menu_links){
    $menu_links = array_slice( $menu_links, 0, 5, true )
        + array( 'favoris' => 'Mes favoris' )
        + array_slice( $menu_links, 5, NULL, true )
        + array( 'delete-account' => 'Supprimer mon compte' )
        + array_slice( $menu_links, 5, NULL, true );
    return $menu_links;
}
add_action( 'init', 'custom_add_endpoint' );
function custom_add_endpoint() {
    add_rewrite_endpoint( 'favoris', EP_PAGES );
    add_rewrite_endpoint( 'delete-account', EP_PAGES);
}

2/新端点的内容:

add_action( 'woocommerce_account_favoris_endpoint', 'custom_my_account_endpoint_content_favoris' );
function custom_my_account_endpoint_content_favoris() {
    $user = wp_get_current_user();
    $user_id=$user->ID;
    $favoris=get_field('liste_des_favoris','user_'.$user_id);
    $favoris_id=array();
    echo "<h3>Vos produits favoris :</h3>";
    if ($favoris!=''){
        foreach ($favoris as $favori) {
            $favoris_id[] = $favori['produit_favori'];
        }
        echo '<ul class="list-produits">';
        foreach($favoris as $favori){
            $product=wc_get_product($favori['produit_favori']);
            $product = $product->get_data();
            $sidebar = true;
            ItemProduit($product,$sidebar,$favoris_id,$user_id);
        }
        echo '</ul>';
    } else {
        echo "<p>Vous n'avez pas de favoris pour le moment1.</p>";
    }
}
add_action( 'woocommerce_account_delete-account_endpoint', 'custom_my_account_endpoint_content' );
function custom_my_account_endpoint_content() {
    echo "<p>Etes-vous sûr de vouloir supprimer défintivement votre compte ?<br/>Attention ! Toute suppression de compte est définitive, vous perdrez tout l'historique de vos achats.<br/>En supprimant votre compte, toutes vos données personnelles seront définitivement effacées de notre base de données.</p>";
    echo '<p class="status"></p>';
    wp_nonce_field( 'ajax-delete-nonce', 'delete-security' );
    echo '<div class="btns-delete">';
    echo '<div class="btn btn-red" id="submit-delete">Supprimer</div>';
    echo '</div>';
}

3/自定义菜单顺序:

3/ Custom menu order :

add_filter ( 'woocommerce_account_menu_items', 'custom_sort_menu' );
function custom_sort_menu( $menu_links ){
    $menu_links = array(
        'dashboard' => 'Tableau de bord',
        'orders' => 'Mes commandes',
        'favoris' => 'Mes favoris',
        'edit-address' => 'Mes adresses',
        'edit-account' => 'Détails du compte',
        'customer-logout' => 'Déconnexion',
        'delete-account' => 'Supprimer mon compte',
    );
    return $menu_links;
}

推荐答案

要允许复合过滤器挂钩 woocommerce_endpoint _ {$ endpoint} _title 与自定义我的帐户"端点一起使用,您的内容中缺少一些内容代码.您需要在 woocommerce_get_query_vars 过滤器挂钩中将这些终结点声明为查询var,如下所示:

To allow the composite filter hook woocommerce_endpoint_{$endpoint}_title to work with custom My Account endpoints, there is something missing from your code. You need to declare those endpoints as query vars in woocommerce_get_query_vars filter hook as follows:

add_filter( 'woocommerce_get_query_vars', 'myaccount_custom_endpoints_query_vars' );
function myaccount_custom_endpoints_query_vars( $query_vars ) {
    $query_vars['favoris'] = 'favoris';
    $query_vars['delete-account'] = 'delete-account';

    return $query_vars;
}

然后更改可以有效使用的自定义终结点标题:

Then to change that custom endpoints titles you can use effectively:

add_filter( 'woocommerce_endpoint_favoris_title', 'change_my_account_favoris_title' );
function change_my_account_favoris_title( $title ) {
    return __( "Favoris", "woocommerce" );
}

add_filter( 'woocommerce_endpoint_delete-account_title', 'change_my_account_delete_account_title' );
function change_my_account_delete_account_title( $title ) {
    return __( "Supprimer mon compte", "woocommerce" );
}

代码进入活动子主题(或活动主题)的functions.php文件中.经过测试,可以正常工作.

Code goes in functions.php file of the active child theme (or active theme). Tested and works.

请记住通过保存Wordpress设置永久链接"上的更改来刷新重写规则.部分.

Remember to refresh rewrite rules by saving changes on Wordpress settings "Permalinks" section.


其他说明:

在您的实际代码中,您在2个函数中使用了两倍的 woocommerce_account_menu_items 钩子……您只需要其中之一

In your actual code, you are using 2 times the hook woocommerce_account_menu_items in 2 functions… You need just one of them

这篇关于在WooCommerce中设置“我的帐户"自定义项终结点标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆