Здравствуйте, недавно начал осваивать WP, столкнулся с одной проблемой. В гугле не смог найти ответ. Возможно кому-то покажется ерундой, строго не судите.
Суть проблемы:
Хочу сделать отправку писем на email после отправки формы, без использования плагинов, тоесть самостоятельно сделав с помощью jquery обработчик который сделает XHR запрос. Вроде бы все верно(про эстетику не говорю), но после того как XHR запрос отправляется на
firstwp/wp-admin/admin-ajax.php?action=send_mail, функция send_mail в functions.php не запускается. Уже 2 дня пытаюсь решить проблему, но без результатов.
Вот html/css разметка моей формы, а также содержимое файла main.js:
Вот код из файла functions.php, тут много всего...
<?php
add_action('wp_enqueue_scripts', 'theme_styles');
add_action('wp_enqueue_scripts', 'theme_scripts');
add_action('after_setup_theme', 'theme_register_nav_menu');
add_action('widgets_init', 'register_my_widgets');
add_action("wp_ajax_send_mail", "send_mail");
add_action("wp_ajax_nopriv_send_mail", "send_mail");
function send_mail() {
/* Забираем отправленные данные */
$contactName = $_POST['contactName'];
$contactEmail = $_POST['contactEmail'];
$contactSubject = $_POST['contactSubject'];
$contactMessage = $_POST['contactMessage'];
add_filter( 'wp_mail_from_name', function($from1){
return 'Kravetz';
} );
add_filter( 'wp_mail_from', function($from2){
return 'ddddd65@yandex.ru';
} );
$emailTo = 'mmmm@yandex.ru';
$subject = 'Test mail рассылки!';
$headers = array(
'From: ddddd65@yandex.ru',
'content-type: text/html'
);
$mailBody = "$contactName <br/><br/> $contactEmail <br/><br/> $contactSubject";
wp_mail($emailTo, $subject, $mailBody, $headers);
wp_die();
};
add_action('init', 'my_custom_init');
function my_custom_init(){
register_post_type('portfolio0', array(
'labels' => array(
'name' => 'портфолио0', // Основное название типа записи
'singular_name' => 'портфолио', // отдельное название записи типа Book
'add_new' => 'Добавить новую',
'add_new_item' => 'Добавить новую книгу',
'edit_item' => 'Редактировать книгу',
'new_item' => 'Новая работа',
'view_item' => 'Посмотреть работу',
'search_items' => 'Найти работу',
'not_found' => 'работ не найдено',
'not_found_in_trash' => 'В корзине работ не найдено',
'parent_item_colon' => '',
'menu_name' => 'портфолиоменю'
),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => true,
//'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_icon' =>
'dashicons-admin-network',
'menu_position' => 4,
'supports' => array('title','editor','author','thumbnail','excerpt','comments'),
'taxonomies' => array('skills')
) );
//function create_taxonomy(){
// список параметров: http://wp-kama.ru/function/get_taxonomy_labels
register_taxonomy('skills', array('portfolio0'), array(
'label' => '', // определяется параметром $labels->name
'labels' => array(
'name' => 'Навыки',
'singular_name' => 'Навык',
'search_items' => 'Найти навык',
'all_items' => 'Все навыки',
'view_item ' => 'Смотреть навыки',
'parent_item' => 'Родительский навык',
'parent_item_colon' => 'Родительский навык:',
'edit_item' => 'Изменить навык',
'update_item' => 'Обновить навык',
'add_new_item' => 'Добавить новый навык',
'new_item_name' => 'Новое имя навыка',
'menu_name' => 'Навыки',
),
'description' => '', // описание таксономии
'public' => true,
'publicly_queryable' => null, // равен аргументу public
'show_in_nav_menus' => true, // равен аргументу public
'show_ui' => true, // равен аргументу public
'show_in_menu' => true, // равен аргументу show_ui
'show_tagcloud' => true, // равен аргументу show_ui
'show_in_rest' => null, // добавить в REST API
'rest_base' => null, // $taxonomy
'hierarchical' => false,
//'update_count_callback' => '_update_post_term_count',
'rewrite' => true,
//'query_var' => $taxonomy, // название параметра запроса
'capabilities' => array(),
'meta_box_cb' => null, // html метабокса. callback: `post_categories_meta_box` или `post_tags_meta_box`. false — метабокс отключен.
'show_admin_column' => false, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
'_builtin' => false,
'show_in_quick_edit' => null, // по умолчанию значение show_ui
) );
//Добавлю тестовый шорт код
}
add_shortcode( 'iframe', 'Gi' );
function Gi( $atts ) {
$atts = shortcode_atts( array(
'href' => 'http://wp-kama.ru',
'width' => '600px',
'height' => '550px',
), $atts, 'iframe' );
return '<iframe src="'. $atts['href'] .'" width="'. $atts['width'] .'" height="'. $atts['height'] .'"> <p> Your browser does not support iframes.</p></iframe>';
};
function theme_register_nav_menu(){
register_nav_menu('top', 'меню в шапке');
add_theme_support( 'title-tag' );
//add_theme_support( 'post-thumbnails', array( 'post' ) );
add_theme_support( 'post-thumbnails', array( 'portfolio0' ) );
add_theme_support( 'post-formats', array( 'aside', 'video' ) );
//add_image_size( 'post-thumb', 1300, 500, true );
add_image_size( 'category-thumb', 100, 100, true );
};
function theme_register_nav_menu2(){
register_nav_menu('bottom1', 'меню в подвале1');
};
function register_my_widgets(){
register_sidebar( array(
'name' => 'Right Sidebar',
'id' => "right_sidebar",
'description' => 'мой сайдбар',
'before_widget' => '<div class="widget %2$s">',
'after_widget' => "</div>\n",
'before_title' => '<h5 class="widgettitle">',
'after_title' => "</h5>\n",
) );
}
function theme_styles(){
//wp_enqueue_style('styles', get_stylesheet_uri());
wp_enqueue_style('default', get_template_directory_uri() . '/assets/css/default.css');
wp_enqueue_style('layout', get_template_directory_uri() . '/assets/css/layout.css');
//wp_enqueue_style('media-queries', get_template_directory_uri() . '/css/media-queries.css');
};
function theme_scripts(){
wp_deregister_script('jquery');
wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js');
wp_enqueue_script('jquery');
wp_enqueue_script('flexslider', get_template_directory_uri() . '/assets/js/jquery.flexslider.js', ['jquery'], null, true);
wp_enqueue_script('doubletaptogo', get_template_directory_uri() . '/assets/js/doubletaptogo.js', ['jquery'], null, true);
wp_enqueue_script('init', get_template_directory_uri() . '/assets/js/init.js', ['jquery'], null, true);
wp_enqueue_script('modernizr', get_template_directory_uri() . '/assets/js/modernizr.js', null, null, false);
wp_enqueue_script('main', get_template_directory_uri() . '/assets/js/main.js', ['jquery'], null, true);
};