Parmi les méthodes suivantes, je me demande quelle est la meilleure méthode pour mettre à jour une valeur d'option lorsque la valeur à mettre à jour provient d'un rappel ajax. Puisque Wordpress Codex dit clairement que apply_filters
est utilisé pour renvoyer les valeurs formatées, où do_action
s est utilisé pour les exécutions de fonctions logiques.
add_action('wp_ajax_test_action', 'testAction');
///****** Method 1 ********///
function testAction() {
$test = apply_filters('test_filter', 'test');
wp_send_json($test);
}
add_filter('test_filter', 'test_filter_function', 10, 1);
function test_filter_function($value) {
$success = get_option('update_from_test_doaction') !== false ?
update_option('update_from_test_doaction', $value, 'yes') : add_option('update_from_test_doaction', $value, '', 'yes');
if($success)
return 'Updated';
return 'Not updated';
}
///****** Method 2 ********///
function testAction() {
$test = apply_filters('test_filter', 'test');
$test2 = get_option('update_from_test_doaction', '');
do_action('test_doaction', $test);
$sendJson = 'Not updated';
if($test != $test2)
$sendJson = 'Updated';
wp_send_json($sendJson);
}
add_filter('test_filter', 'test_filter_function', 10, 1);
function test_filter_function($value) {
// $value .= '123';
return $value;
}
add_action('test_doaction', 'test_doaction_functin', 10, 1);
function test_doaction_functin($value) {
get_option('update_from_test_doaction') !== false ?
update_option('update_from_test_doaction', $value, 'yes') : add_option('update_from_test_doaction', $value, '', 'yes');
}
Contrairement aux commentaires ... je dirais que vous devriez utiliser le filtre comme dans la méthode 1 parce que ...
Sorry, couldn't update.
C'est toujours plus facile avec les filtres, souvenez-vous que chaque fois qu'une valeur est impliquée (comme un message de sortie ou une valeur enregistrée dans la base de données), il est préférable d'utiliser des filtres.