Как изменить названия страниц моей учетной записи WooCommerce? - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу изменить заголовки страниц (заголовки записей) для каждой страницы в разделе «Моя учетная запись WooCommerce», чтобы они относились к фактической странице, на которой вы находитесь, а не выводили общую «Моя учетная запись» на каждой странице.

Я посмотрел вокруг и увидел это решение в нескольких местах:

function wpb_woo_endpoint_title( $title, $id ) {
    if ( is_wc_endpoint_url( 'downloads' ) && in_the_loop() ) { // add your endpoint urls
        $title = "Download MP3s"; // change your entry-title
    }
    elseif ( is_wc_endpoint_url( 'orders' ) && in_the_loop() ) {
        $title = "My Orders";
    }
    elseif ( is_wc_endpoint_url( 'edit-account' ) && in_the_loop() ) {
        $title = "Change My Details";
    }
    return $title;
}
add_filter( 'the_title', 'wpb_woo_endpoint_title', 10, 2 );

Это работает , а не , если вы не удалите проверку in_the_loop, которая, очевидно, не идеальна, так какзатем он заканчивает тем, что меняет и другие вещи на странице.

Затем я нашел этот ответ , как пример того, как изменить заголовок страницы "Сведения об учетной записи":

add_filter( 'woocommerce_endpoint_edit-account_title', 'change_my_account_edit_account_title', 10, 2 );
function change_my_account_edit_account_title( $title, $endpoint ) {
    $title = __( "Edit your account details", "woocommerce" );

    return $title;
}

Но это не сработало, похоже, что оно вообще не входило в функцию.

Есть ли способ сделать это, который действительно работает?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Изменение основного заголовка страницы моей учетной записи и подразделов заголовка страницы моей учетной записи:

1) Для "Моя учетная запись: dashbord (главная страница) :

Чтобы изменить основной «Мой аккаунт» заголовок страницы, вам просто нужно изменить заголовок страницы в бэкэнде напрямую, потому что это неконечная точка и для проверки в разделе Settings> Advanced, что страница (с переименованным заголовком) по-прежнему назначена "странице моей учетной записи".

enter image description here


enter image description here


2) Для других заголовков страниц «конечных точек» в разделе «Моя учетная запись»:

Использование woocommerce_endpoint_{$endpoint}_title составной специализированный крючок фильтра , где {$endpoint} необходимо заменить на целевую конечную точку (см. Доступные конечные точки в Settings> Advancedраздел)

Пример: Чтобы изменить Мой аккаунт Заголовок конечной точки "Заказы" Вы будете использовать:

add_filter( 'woocommerce_endpoint_orders_title', 'change_my_account_orders_title', 10, 2 );
function change_my_account_orders_title( $title, $endpoint ) {
    $title = __( "Your orders", "woocommerce" );

    return $title;
}

Код идетв файле function.php yнаша активная детская тема (или активная тема).Протестировано и работает.

enter image description here

Если это не работает, это из-за того, что что-то другое создает проблемы, например ваши собственные настройки, ваша теманастройки, плагин или что-то еще…


Связанные ответы StackOverFlow:

0 голосов
/ 28 февраля 2019

Вы можете изменить названия элементов MyAccount следующим образом:

/**
 * Rename WooCommerce MyAccount menu items
 */
add_filter( 'woocommerce_account_menu_items', 'rename_menu_items' );
function rename_menu_items( $items ) {

    $items['downloads']    = 'Download MP3s';
    $items['orders']       = 'My Orders';
    $items['edit-account'] = 'Change My Details';

    return $items;
}

Чтобы изменить заголовок также на каждой странице учетной записи, вам также необходимо добавить это:

/**
 * Change page titles
 */
add_filter( 'the_title', 'custom_account_endpoint_titles' );
function custom_account_endpoint_titles( $title ) {
    global $wp_query;

    if ( isset( $wp_query->query_vars['downloads'] ) && in_the_loop() ) {
        return 'Download MP3s';
    }

    if ( isset( $wp_query->query_vars['orders'] ) && in_the_loop() ) {
        return 'My Orders';
    }

    if ( isset( $wp_query->query_vars['edit-account'] ) && in_the_loop() ) {
        return 'Change My Details';
    }

    return $title;
}

ЕслиВы используете Yoast SEO, вам нужно добавить еще одну функцию, чтобы установить правильные заголовки страниц на вкладке браузера.Если вам это также понадобится, я расширю свой ответ.

Поместите это в ваш файл functions.php.Проверено и работает.

...