jQueryを使用してボタンを切り替えようとしています。jQueryを切り替えるPHP
作品jQuery(document).ready(function($) {
$("#wp-admin-bar-maintenance").click(function() {
var data = { action: 'maintenance' };
$.post(maintenance.ajaxurl, data, function(response) {
$(".maintenance-icon").toggleClass('flicker');
});
return false;
});
});
、ボタンは「ちらつき」クラスを持っており、それがトグルだが、今PHP側はそれをめちゃくちゃ。これは何
function maintenance_adminbar() {
global $wp_admin_bar;
if(current_user_can('manage_options')){
if(get_option('maintenance') == true) {
$wp_admin_bar->add_menu(array(
'id' => 'maintenance',
'title' => __('Maintenance') . get_option('maintenance'),
'href' => '#',
'meta' => array(
'class' => 'maintenance-icon flicker'
)
));
} else {
$wp_admin_bar->add_menu(array(
'id' => 'maintenance',
'title' => __('Maintenance') . get_option('maintenance'),
'href' => '#',
'meta' => array(
'class' => 'maintenance-icon'
)
));
}
}
}
add_action('admin_bar_menu', 'maintenance_adminbar', 9999);
はそれがget_option('maintenance')
がtrue
ときにPHPを使用してボタンに「ちらつき」と呼ばれるクラスを追加しています。
しかし、トグル機能はこれ以上切り替えられません。私がクリックすると、それはトグルしようとしているのがわかりますが、PHPコードのフリッカークラスがオーバーライドしています。
これを修正する方法はありますか?
更新。
これは上記のAJAX関数が使用するping関数です。
function maintenance_process() {
update_option('maintenance', !get_option('maintenance'));
echo get_option('maintenance');
die();
}
add_action('wp_ajax_maintenance', 'maintenance_process');
なぜPHPを使用してボタンにクラスを追加しようとしていますか? PHPはサーバー側のコードです。私はこれがどのように動作するのか見ていない。また、コードの多くを見たいのですが、これは間違っている可能性がある場所がたくさんあるためです(たとえば、 'maintenance.ajaxurl'とは何ですか?そしてこのセットはどこにありますか?なぜjQueryだけで簡単に実現できるのか、PHPでこのようなことをしようとするのは本当にわかりません。必要なサーバからの情報であれば、 '$ .get()'でその情報を取得し、jQueryを続けます。 –
@LaurensSwartユーザーがボタンをクリックすると、ボタンが赤く変わります。しかし、ユーザーがページをリロードすると、ボタンは赤色のままでなければなりません。私の唯一の選択肢は、PHPを使用して要素に「flicker」という赤いクラスを追加することでした。 – Mitch
データベースやクッキーにボタンの状態を保存してjQueryがトグルを処理させないようにしましょう。 –