У нас есть сайт Wordpress в корне нашего домена. Плагин перевода, который мы используем, добавляет к домену (в нашем случае для чешского языка) /cs — это означает, что мы можем выполнить более одного перевода, но использовать ту же базу данных и wp-контент, что и основной англоязычный веб-сайт.
Однако добавленный /cs приводит к сбою функции выхода из системы, поскольку она пытается использовать текущий каталог в качестве основы для извлечения фактического содержимого сайта.
Фактически используется код . Мы попробовали простой HTML-ссылку, но ссылка для выхода из системы является динамической и требует уникального значения nonce для проверки команды.
Есть ли у вас какие-либо идеи о том, как мы можем создать кнопка выхода из системы, которая использует фактический адрес сайта (mywebsite.com), а не добавленный «каталог» (mywebsite.com/cs). До сих пор мне не удалось отредактировать wp_logout_url, добавив перед ним /. Есть идеи?
Примеры ссылок:
Правильно:
http://www.mywebsite.com/backend?action ... d8eaf8594a
Неверно, результатом является ОШИБКА 404:
http://www.mywebsite.com/cs/backend?act ... d8eaf8594a
Используется фактический код (соответствующим кодом выхода является часть #bawlogout#):
add_filter( 'wp_setup_nav_menu_item', 'bawllm_setup_nav_menu_item' );
function bawllm_setup_nav_menu_item( $item )
{
global $pagenow;
if( $pagenow!='nav-menus.php' && !defined('DOING_AJAX') && isset( $item->url ) && strstr( $item->url, '#baw' ) != '' ){
$item_url = substr( $item->url, 0, strpos( $item->url, '#', 1 ) ) . '#';
$item_redirect = str_replace( $item_url, '', $item->url );
switch( $item_url ) {
case '#bawloginout#' :
$item_redirect = explode( '|', $item_redirect );
if( count( $item_redirect ) != 2 )
$item_redirect[1] = $item_redirect[0];
for( $i = 0; $i url = is_user_logged_in() ? wp_logout_url( $item_redirect[1] ) : wp_login_url( $item_redirect[0] );
$item->title = bawllm_loginout_title( $item->title ) ; break;
case '#bawlogin#' : $item->url = wp_login_url( $item_redirect ); break;
case '#bawlogout#' : $item->url = wp_logout_url( $item_redirect ); break;
case '#bawregister#' : if( is_user_logged_in() ) $item->title = '#bawregister#'; else $item->url = site_url( '/wp-login.php?action=register', 'login' ); break;
}
$item->url = esc_url( $item->url );
}
return $item;
}
Подробнее здесь: https://stackoverflow.com/questions/158 ... on-failing