Не надо так делать. Для аякса у ВП есть специальные штуки, делается так(упрощенно), в functions.php:
add_action('wp_ajax_sendmail', 'sendmail_callback');
add_action('wp_ajax_nopriv_sendmail', 'sendmail_callback');
function sendmail_callback() {
$data = $_POST; //тут у нас все данные отправленные js скриптом
//отсылаем почту, создаем запись и т.д.
}
В js(jquery):
var data = {
action: 'sendmail',
//mail, имя или другие поля к примеру
mail: jQuery("#mail").val()
};
jQuery.post('/wp-admin/admin-ajax.php', data, function(response) {
//получаем ответ, делаем что надо или выводим ошибку
}, "json");
Если возвращает 0, то попробуйте установить
$wp_error
в
true
, т.е.
echo wp_insert_post($source, true);
и посмотреть какую ошибку возвращает.