Wordpress site in subdirectory, logout function failing -
we have wordpress site in root of our domain. translation plugin use appends domain (in our case czech) /cs - means can run more 1 translation use same database , wp-content main english website.
however, added /cs causes logout function fail tries use current directory basis actual site content being pulled from.
the actual code being used <?php echo wp_logout_url( $redirect ); ?>
. have tried simple html href logout link dynamic , requires unique nonce value validate command.
do have ideas how can have logout button uses actual site address (mywebsite.com) rather added 'directory' (mywebsite.com/cs). have far been unable edit wp_logout_url add / before it. ideas?
example links: correct: http://www.mywebsite.com/backend?action=logout&redirect_to=index.php&_wpnonce=d8eaf8594a
incorrect, resulting in 404 error: http://www.mywebsite.com/cs/backend?action=logout&redirect_to=index.php&_wpnonce=d8eaf8594a
actual code being used (relevant logout code #bawlogout# part):
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 <= 1; $i++ ): if( $item_redirect[$i] == '%actualpage%') $item_redirect[$i] = $_server['request_uri']; endfor; $item->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; }
i put url variable can perform regular expression on it, example:
<?php $url = wp_logout_url( $redirect ); $fixed_url = preg_replace("/stuff_to_find/", "stuff_to_replace", $url); ?>
Comments
Post a Comment