テーマのテーマフロントエンドから管理バーを削除しようとしています。
次のコードブロックが見つかりました。
add_filter( 'show_admin_bar', '__return_false' );
remove_action( 'personal_options', '_admin_bar_preferences' );
これはうまくいきます。 しかし私は定型テーマに恒久的なコードブロックを追加し、ユーザーが管理バーのオンとオフを切り替えることができるように、ユーザーに選択肢を追加したいと思いました。
管理領域にトグルを追加し、値を正常にコールバックしました。ただし、管理バーのコールバックを制御するために値をテストすると、管理バーに移動しますが、CSSはHTML要素に適用されます。 (margin-top: 28px !important;
)は残り、私のテーマのトップに28pxのギャップを残します。
これは、値をコールバックし、それに応じて応答するために使用しているコードブロックです。
function block_admin(){
$show = get_option('admin_bar_');
$show = $show['admin_bar_toggle'];
if (!$show || $show != 'on'){
add_filter( 'show_admin_bar', '__return_false' );
remove_action( 'personal_options', '_admin_bar_preferences' );
}
}
add_action('init', 'block_admin');
提案
必要に応じて、私のカスタムオプション(register_setting
を使用)はadmin_menu
フックが起動されるまで初期化されませんが、block_admin
はinit
で起動されます。 get_option
は登録されている設定には依存しないと思うので、これは問題ではないと思いますが、むしろデータベースに存在する(または存在しない)オプションです。
早い時点で関数を起動するだけで問題は解決しました
function block_admin(){
$show = get_option('admin_bar_');
$show = $show['admin_bar_toggle'];
fb::log($show,'shoe');
if (!$show || $show != 'on'){
add_filter( 'show_admin_bar', '__return_false' );
remove_action( 'personal_options', '_admin_bar_preferences' );
}
}
add_action('after_setup_theme','block_admin');
最新のWordpressバージョンではすでにadmin-barを無効にするためのユーザーごとのオプションがあります。これはユーザープロファイル設定にあります。
…/ wp-admin/profile.php(ログイン後にあなたの名前をクリックしてください)
あなたは show_admin_bar(false)
を試しましたか?コードを簡単に見れば管理バーを強制終了する必要があり、非常に早く(実際にはロード時に)実行するのが安全です。
それがあなたの要求にマッチするかどうかわからない。しかし、ここではグローバルにオフにするGoogleアドミンバーへのプラグインです。なぜ見ないでください:)
http://wordpress.org/extend/plugins/global-admin-bar-hide-or-remove/
設定を保存して、それらがデータベースに存在するようにしましたか?
また、これを変更するとどうなりますか。
if ( ! $show || $show != 'on' ) {
...これに:
if ( ! isset( $show ) || $show != 'on' ) {