Я новичок в ООП PHP , поэтому, скорее всего, я ошибаюсь.
Вот мой простой класс. Он вызывается, когда я загружаю страницу, и дополнительный jQuery прекрасно работает для отправки запроса ajax.
EDIT:
У меня есть новая вкладка, которую я создал на странице учетной записи woocommerce. (Knp_product_submission_content). Это выплевывает некоторые основные HTML.
Когда пользователь щелкает значок на странице, данные из формы передаются через ajax (только значение ввода действия). Это должно затем вернуть содержимое из обратного вызова.
/**************
Add the core js file in the main plugin file.
*********************/
function knp_vendor_scripts(){
wp_enqueue_script( 'core', plugin_dir_url(__FILE__).'js/core.js', array(), false, true );
wp_localize_script('core', 'vendor_ajax_object', array('ajax_url' => admin_url('admin-ajax.php')));
}
add_action( 'wp_enqueue_scripts', 'knp_vendor_scripts' );
/**
* New class initiated in a woocommerce endpoint function
**/
function knp_product_submissions_content(){
//Create the views object for fetching and displaying.
$views = new submission_views();
echo '<div class="ajax-container-div">';
//response content should go here
echo '</div>';
}
add_action('woocommerce_account_product-submissions_endpoint', 'knp_product_submissions_content');
/**
* Get the data from the form
* the user has just clicked on
*/
jQuery(document).ready(function(){
jQuery('.knpv_form_submit').on('click', function(){
var formID =
jQuery(this).closest('form.knpv_ajax_form').attr('id');
var data = jQuery('#'+formID).serialize();
jQuery.post(vendor_ajax_object.ajax_url, data, function(response) {
jQuery('.ajax-container-div').html(response);
});
});
});
class submission_views{
/**
* Setup ajax action and callbacks
*/
public function __construct(){
//Get the form for a new submission
add_action('wp_ajax_knpv_add_new_submission', array($this, 'knpv_add_new_submission_callback'));
add_action('wp_ajax_nopriv_knpv_add_new_submission', array($this, 'knpv_add_new_submission_callback'));
}
/**
* Get the form html and send back
*/
public function knpv_add_new_submission_callback(){
ob_start();
?>
<section class="knp_vendor_submission_form">
<div class="container">
<div class="row">
<div class="col-md-12">
<?php echo do_shortcode('[gravityform id=3'); ?>
</div>
</div>
</div>
</section>
<?php
$content = ob_get_clean();
return $content;
}
Я использую это на самом деле только для того, чтобы заменить некоторый контент на странице. Он срабатывает при нажатии, и я получаю ответ
400 Плохой запрос
Я размещаю add_action в нужном месте? Как узнать, видит ли он функцию обратного вызова?
ТИА