Добавить пользовательский элемент выше пункта выхода из системы в моем аккаунте Woocommerce

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

// Add Menu Item
function my_account_menu_items( $items ) {
return array_merge(
array_slice( $items, 0, count( $items ) - 1 ),
array( 'my-files' => 'My Files' ),
array_slice( $items, count( $items ) - 1 )
);
}
add_filter( 'woocommerce_account_menu_items', 'my_account_menu_items', 10, 1);

Я попытался вызвать фильтр по-другому, без двух последних аргументов. Я также пытался сделать

function my_account_menu_items( $items ) {
$items['my-files'] = 'My Files';
return $items;
}

1

Решение

Вместо этого вы должны попробовать следующее:

add_filter( 'woocommerce_account_menu_items', 'add_item_to_my_account_menu', 30, 1 );
function add_item_to_my_account_menu( $items ) {
$new_items = array();
// Loop throu menu items
foreach( $items as $key => $item ){
if( 'customer-logout' == $key )
$new_items['my-files'] = __( 'My Files' );

$new_items[$key] = $item;
}
return $new_items;
}

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

введите описание изображения здесь

0

Другие решения

Это проверено и работает:

function custom_my_account_menu_items( $items ) {

$new_items = array();
foreach($items as $key => $value){
if($key != 'customer-logout'){
$new_items[$key] = $value;
}else{
$new_items['my-files'] = 'My Files';
$new_items[$key] = $value;
}
}
return $new_items;
}
add_filter( 'woocommerce_account_menu_items', 'custom_my_account_menu_items' );
0

По вопросам рекламы [email protected]