すべて
私はワードプレスのカスタムメニューを使用しています、そしてログアウトとして一つのメニューがあります。私はwordpressのログアウト機能を知っています<?php echo wp_logout_url(); ?>
しかし、どのように私はカスタムメニューでそれを使うことができますか?
カスタムボタンを作成する方法と場所はわかりませんが、フィルターごとにこのようなリンクを追加できます。 フィルター関数を'wp_nav_menu_objects'
に追加し、必要な場所にリンクを挿入します。
基本的な例を次に示します。
add_filter( 'wp_nav_menu_objects', 'wpse_46547_add_log_out_link', 10, 2 );
function wpse_46547_add_log_out_link( $sorted_menu_items, $args )
{
$link = array (
'title' => 'Log out',
'menu_item_parent' => 0,
'ID' => '',
'db_id' => '',
'url' => wp_logout_url()
);
$sorted_menu_items[] = (object) $link;
return $sorted_menu_items;
}
あなたはshouldコードを修正します:
has_log_out_link
のmenu_class
パラメーターにクラスwp_nav_menu
を必要とし、$args->menu_class
をテストします。menu_item_parent
を0
以外の投稿IDに設定します。他の誰かがこれに苦労した場合、私が見つけた最も簡単な方法は単にカスタムリンクオプションを使ってあなたがそれを望むところにちょうどログアウトメニュー項目を追加することでした。 URLをlogouturlのようなユニークなものにして、単にこのコードを自分のfunctions.phpファイルに追加するか、カスタムコードを追加したい場所に追加します。
add_filter( 'wp_nav_menu_items', 'wp123e_loginout_menu_link', 10, 2 );
function wp123e_loginout_menu_link( $items, $args ) {
if ($args->theme_location == 'primary') {
if (is_user_logged_in()) {
$items = str_replace('logouturl', wp_logout_url(), $items);
}
}
return $items;
}
Str_replaceのこの最初のパラメータを、メニュー設定のカスタムリンクで使用されている文字列に変更することを忘れないでください。 theme_locationをprimaryから適切な場所に変更する必要があるかもしれません。