functions.php 9.21 KB
<?php
/**
 * Определение функций темы
 *
 *
 * @package WordPress
 * @subpackage FenixMedicaCatheter
 * @since FenixMedica 1.0
 */

//Подключаем шорткод Шприцы
include_once(__DIR__.'/inc/shprics.php');
//Подключаем шорткод ОПИСАНИЕ
include_once(__DIR__.'/inc/opisanie.php');
//Подключаем шорткод ПРЕИМУЩЕСТВА МЕТОДА
include_once(__DIR__.'/inc/preimushestvo.php');
//Подключаем шорткод Если Вам необходима
include_once(__DIR__.'/inc/man.php');
//Подключаем шорткод FAQ
include_once(__DIR__.'/inc/faq.php');
//Подключаем шорткод КОНТАКТЫ
include_once(__DIR__.'/inc/contacts.php');

//Подключение русурсок к страние
function action_enqueue_meta() {
	//Подключение меты
	//Стили
	wp_enqueue_style( 'style',					get_stylesheet_uri(), 												array(),	filemtime(__DIR__.'/style.css') );
	wp_enqueue_style( 'bootstrap.min',			get_theme_file_uri('/assets/css/bootstrap/bootstrap.min.css'),		array(),	filemtime(__DIR__.'/assets/css/bootstrap/bootstrap.min.css') );
	//Скрипты
	wp_deregister_script( 'jquery' );
	wp_enqueue_script('jquery.min',				get_theme_file_uri('/assets/js/jquery/jquery.min.js'),				array(),			filemtime(__DIR__.'/assets/js/jquery/jquery.min.js'), true);
	wp_enqueue_script('bootstrap.bundle.min',	get_theme_file_uri('/assets/js/bootstrap/bootstrap.bundle.min.js'),	array(),			filemtime(__DIR__.'/assets/js/bootstrap/bootstrap.bundle.min.js'),	true);
	wp_enqueue_script('jquery.inputmask',		get_theme_file_uri('/assets/js/jquery/jquery.inputmask.min.js'),	array('jquery.min'),filemtime(__DIR__.'/assets/js/jquery/jquery.inputmask.min.js'),	true);
	wp_enqueue_script('script',					get_theme_file_uri('/assets/js/script.js'),							array('jquery.min'),filemtime(__DIR__.'/assets/js/script.js'), 	true);
}
add_action( 'wp_enqueue_scripts', 'action_enqueue_meta' );

//Правим ссылки в меню
function menu_filter_a( $atts, $item, $args, $depth ){
	if ( !isset( $atts['class'] ) )
		$atts['class'] = '';
	if ($item->current || in_array('current-menu-ancestor', $item->classes) )	
		$atts['class'].=($atts['class']===''?'':' ').'active';
	switch($args->theme_location)
		{
			case 'menu_up':
			case 'menu_down': 
				$atts['class'].= ($atts['class']===''?'':' ').$args->link_class;
			break;
		}
	return $atts;
}
add_filter( 'nav_menu_link_attributes', 'menu_filter_a', 10, 4 );


//Правим пункт в меню
function menu_filter_li( $classes, $item, $args, $depth ){
	switch($args->theme_location)
		{
			case 'menu_up':
			case 'menu_down': 
				$classes = array($args->list_item_class);
			break;
		}	
	return $classes;
}
add_filter( 'nav_menu_css_class', 'menu_filter_li', 10, 4 );

//Настройка темы
function action_setup_theme() {
	//Включаем поддержку меню
	add_theme_support( 'menus' );
	//Автоматическая генеция тайтла
	add_theme_support( 'title-tag' );
	//Включение поддержки превью у постов
	add_theme_support( 'post-thumbnails' );
	//Сегрегация по типам поста
	add_theme_support( 'post-formats', array( 'aside' ) );

	register_nav_menus(
		array(
			'menu_up'		=> 'Шапка',
			'menu_down'		=> 'Подвал',
		)
	);
}
add_action( 'after_setup_theme', 'action_setup_theme' );


function my_custom_init(){
	//Добавляю поддержку форматов статей для страниц
	add_post_type_support( 'page', 'post-formats' );
}
add_action( 'init', 'my_custom_init' );




add_filter( 'pre_comment_on_post', 'truemisha_verify_comment' );
function truemisha_verify_comment( $commentdata ) {

	if ( isset($_POST[ 'author' ]) && empty( $_POST[ 'author' ] ) ) {
		wp_die( 'Укажите Ваше имя!' );
	}

	if ( isset($_POST[ 'phone' ]) && empty( $_POST[ 'phone' ] ) ) {
		wp_die( 'Укажите телефон!' );
	}

	if ( 
		!isset($_POST[ 'accept' ]) ||
		empty( $_POST[ 'accept' ] ) 
	) {
		wp_die( 'Согласитесь с обработкой Ваших персональных данных!' );
	}


	$post = get_page_by_path( 'backvoices' );
	$post_main = get_page_by_path( 'main' );
	if ($post === null)
		wp_die( 'Ошибка сервера при полученни данных формы' );
	elseif (isset($_POST[ 'comment_post_ID' ])===false)
		wp_die( 'Ошибка сервера при полученни данных о форме' );
	elseif ( 
		(int)$_POST[ 'comment_post_ID' ] == (int)$post->ID ||
		(int)$_POST[ 'comment_post_ID' ] == (int)$post_main->ID 
	)
		{
		}
	unset($post_main, $post);	

	return $commentdata;
}
 
add_action( 'comment_post', 'truemisha_save_comment_field_data' );
function truemisha_save_comment_field_data( $comment_id ) {
	if( !empty( $_POST['phone'] ) ){
		$phone = sanitize_text_field($_POST['phone']);
		add_comment_meta( $comment_id, 'phone', $phone );
	}
}

// Добавляем новый метабокс на страницу редактирования комментария
add_action( 'add_meta_boxes_comment', 'extend_comment_add_meta_box' );
function extend_comment_add_meta_box($comment){
	add_meta_box( 'wrap', 'Дополнительные поля', 'extend_comment_meta_box', 'comment', 'normal', 'high' );
}

// Отображаем наши поля
function extend_comment_meta_box( $comment ){
	$phone  = get_comment_meta( $comment->comment_ID, 'phone', true );
	wp_nonce_field( 'extend_comment_update', 'extend_comment_update', false );
	?>
	<p>
		<label for="phone">Телефон</label>
		<input type="text" name="phone" value="<?php echo esc_attr( $phone ); ?>" class="widefat" />
	</p>
	<?php
}

add_action( 'edit_comment', 'extend_comment_edit_meta_data' );
function extend_comment_edit_meta_data( $comment_id ) {
	if( ! isset( $_POST['extend_comment_update'] ) || ! wp_verify_nonce( $_POST['extend_comment_update'], 'extend_comment_update' ) )
	return;

	if( !empty($_POST['phone']) ){
		$phone = sanitize_text_field($_POST['phone']);
		update_comment_meta( $comment_id, 'phone', $phone );
	}
	else
		delete_comment_meta( $comment_id, 'phone');
}


add_action( 'comment_post', 'author_new_comment_notify', 10, 2 );
function author_new_comment_notify( $comment_ID, $comment_approved ){
	$comment = get_comment( $comment_ID );
	$post = get_post( $comment->comment_post_ID );
	switch($post->post_name)
		{
			case 'backvoices': 
				// сообщение
				$message  = 'Новая заявка на "'. $post->post_title .'"'. "\r\n";
				$message .= sprintf( __('Имя		: %1$s (IP: %2$s)'), $comment->comment_author, $comment->comment_author_IP ) . "\r\n";
				$message .= sprintf( __('Телефон	: %s'), get_comment_meta( $comment_ID, 'phone', true ) ) . "\r\n";
				$message .= 'Комментарий: ' . "\r\n" . $comment->comment_content . "\r\n\r\n";
				// Тема
				$subject = '['.$_SERVER['HTTP_HOST'].'] Заявка на обратный звонок от '.$comment->comment_author;
				// заголовки
				$headers = 'From: No Answer <noanswer@'. $_SERVER['HTTP_HOST'] .'>' . "\r\n";
				@wp_mail( get_option( 'admin_email' ), $subject, $message, $headers );
			break;
			case 'main':
				// сообщение
				$message  = 'Новая заявка на "Обратную связь"'. "\r\n";
				$message .= sprintf( __('Имя		: %1$s (IP: %2$s)'), $comment->comment_author, $comment->comment_author_IP ) . "\r\n";
				$message .= sprintf( __('Телефон	: %s'), get_comment_meta( $comment_ID, 'phone', true ) ) . "\r\n\r\n";
				// Тема
				$subject = '['.$_SERVER['HTTP_HOST'].'] Заявка на обратную связь от '.$comment->comment_author;
				// заголовки
				$headers = 'From: No Answer <noanswer@'. $_SERVER['HTTP_HOST'] .'>' . "\r\n";
				wp_mail( get_option( 'admin_email' ), $subject, $message, $headers );
			break;
		}
}

/*Вывод в админку колонку с телефоном*/
function rudr_add_comments_columns( $my_cols ){
	$misha_columns = array(
		'phone' => 'Телефон'
	);
	$my_cols = array_slice( $my_cols, 0, 3, true ) + $misha_columns + array_slice( $my_cols, 3, NULL, true );
	return $my_cols;
}
add_filter( 'manage_edit-comments_columns', 'rudr_add_comments_columns' );

function rudr_add_comment_columns_content( $column, $comment_ID ) {
	global $comment;
	switch ( $column ) :
		case 'phone' : 
			{
				if ( $meta = get_comment_meta( $comment_ID, $column, true ) ) {
					echo $meta;
				} else {
					echo '-';
				}

				break;
			}
	endswitch;
}
add_action( 'manage_comments_custom_column', 'rudr_add_comment_columns_content', 10, 2 );

/*
add_filter( 'wp_die_handler', 'my_wp_die_handler_function', 9 ); //9 means you can unhook the default before it fires
function my_wp_die_handler_function($function) {
    return 'my_skip_dupes_function'; //use our "die" handler instead (where we won't die)
}
//check to make sure we're only filtering out die requests for the "Duplicate" error we care about
function my_skip_dupes_function( $message, $title, $args ) {
    if (strpos( $message, 'Duplicate comment detected' ) === 0 ) { //make sure we only prevent death on the $dupe check
        remove_filter( 'wp_die_handler', '_default_wp_die_handler' ); //don't die
    }
    return; //nothing will happen
}
*/