web-dev-qa-db-ja.com

管理バーを削除する際の問題

テーマのテーマフロントエンドから管理バーを削除しようとしています。

次のコードブロックが見つかりました。

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_admininitで起動されます。 get_optionは登録されている設定には依存しないと思うので、これは問題ではないと思いますが、むしろデータベースに存在する(または存在しない)オプションです。

1
Mild Fuzz

早い時点で関数を起動するだけで問題は解決しました

 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');
1
Mild Fuzz

最新のWordpressバージョンではすでにadmin-barを無効にするためのユーザーごとのオプションがあります。これはユーザープロファイル設定にあります。

…/ wp-admin/profile.php(ログイン後にあなたの名前をクリックしてください)

1
feeela

あなたは show_admin_bar(false) を試しましたか?コードを簡単に見れば管理バーを強制終了する必要があり、非常に早く(実際にはロード時に)実行するのが安全です。

1
Rarst

それがあなたの要求にマッチするかどうかわからない。しかし、ここではグローバルにオフにするGoogleアドミンバーへのプラグインです。なぜ見ないでください:)

http://wordpress.org/extend/plugins/global-admin-bar-hide-or-remove/

0
Rajeev Vyas

設定を保存して、それらがデータベースに存在するようにしましたか?

また、これを変更するとどうなりますか。

if ( ! $show || $show != 'on' ) {

...これに:

if ( ! isset( $show ) || $show != 'on' ) {
0
Chip Bennett