<form class="form-wrapper reviews-form" id="reviews-form">
<h3>Оставить отзыв</h3>
<div class="reviews-form__row">
<div class="form-wrapper__group">
<input type="text" name="name" value="" placeholder="Ваше имя" required>
</div>
<div class="form-wrapper__group">
<input type="text" name="email" value="" placeholder="Ваш e-mail" required>
</div>
<div class="reviews-form__mark-wrapper">
<ul class="reviews-form__marks-list">
<li><button class="green" data-review-mark="positive"><img src="<?php echo get_template_directory_uri(); ?>/images/svg/happy.svg" alt="Положительный" class="svg"></button></li>
<li><button class="yellow" data-review-mark="medium"><img src="<?php echo get_template_directory_uri(); ?>/images/svg/surprised.svg" alt="Удовлетворительный" class="svg"></button></li>
<li><button class="red" data-review-mark="negative"><img src="<?php echo get_template_directory_uri(); ?>/images/svg/sad.svg" alt="Отрицательный" class="svg"></button></li>
</ul>
</div>
</div>
<div class="reivews-form__message-wrapper">
<textarea name="message" placeholder="Ваш отзыв" required></textarea>
<input type="hidden" name="rating" value="" required>
</div>
<button type="submit" class="button button--green">Оставить отзыв</button>
</form>
/**
* @module Marks
* @description Выставление оценки в форме
*/
$('button[data-review-mark]').on('click',function(e){
e.preventDefault();
$('button[data-review-mark]').removeClass('active');
$(this).addClass('active');
$('#reviews-form').find('[name="rating"]').val($(this).attr('data-review-mark'));
});
/**
* @module Добавление отзыва
* @description Добавление отзыва
*/
$('#reviews-form').submit(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/api/newreview.php",
data: $(this).serialize(),
success: function(){
$('#successreviewmodal').modal('show');
},
error: function() {
$('#errormodal').modal('show');
}
});
});
<?php
ini_set("display_errors",1);
error_reporting(E_ALL);
// *
// Подключаем все файлы для работы
// *
require_once( $_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
require_once( ABSPATH . 'wp-admin/includes/image.php' );
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
$user_name = trim($_POST['name']);
$user_mail = trim($_POST['email']);
$message = trim($_POST['message']);
$rating = trim($_POST['rating']);
$post_data = array(
'post_title' => 'Отзыв #' . uniqid(),
'post_content' => $message,
'post_status' => 'pending',
'post_author' => 1,
'post_type' => 'reviews'
);
// Вставляем запись в базу данных
$post_id = wp_insert_post( $post_data );
// *
// Добавляем все дополнительные поля
// *
update_field( 'rating', $rating, $post_id );
update_field( 'author', $user_name, $post_id );
update_field( 'e-mail', $user_email, $post_id );
?>
/**
* Кастомный тип записей: Отзывы
*/
function create_posttype_reviews() {
register_post_type( 'reviews',
array(
'labels' => array(
'name' => __( 'Отзывы' ),
'singular_name' => __( 'Отзывы' )
),
'public' => true,
'has_archive' => false,
'rewrite' => array('slug' => 'reviews'),
)
);
}
add_action( 'init', 'create_posttype_reviews' );
/**
* Уведомления о новых неопубликованных постах
*/
add_action( 'admin_menu', 'add_user_menu_bubble' );
function add_user_menu_bubble(){
global $menu;
// Отзывы
$count = wp_count_posts('reviews')->pending; // на подтверждении
if( $count ){
foreach( $menu as $key => $value ){
if( $menu[$key][2] == 'edit.php?post_type=reviews' ){
$menu[$key][0] .= ' <span class="awaiting-mod"><span class="pending-count">' . $count . '</span></span>';
break;
}
}
}
}
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(array(
'post_type' => 'reviews',
'posts_per_page' => -1,
'paged' => $paged,
));
?>
<?php if ( have_posts() ) : ?>
<?php $i = 1; ?>
<?php while ( have_posts() ) : the_post(); ?>
<div class="col-lg-6">
<?php echo get_template_part('template-parts/content','review'); ?>
</div>
<?php $i++; ?>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
$post_data = array(
'post_title' => 'Отзыв #' . uniqid(),
'post_content' => $message,
'post_status' => 'pending',
'post_author' => 1,
'post_type' => 'reviews'
);
'post_status' => 'pending',
, что означает добавление всех новых отзывов со статусом На модерации, если нужно отключить эту настройку, то поставьте 'post_status' => 'publish',
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return $notifiable->notify_settings->telegram_enabled ? ['database',TelegramChannel::class] : ['database'];
}
data(){
return {
flag: false,
}
},
methods: {
somefunc(){
if(this.flag == false) {
//do something
//то что выполнится в первый раз
} else {
setInterval(func,5000);
// то что будет выполняться следующие разы
}
this.flag = true;
}
},
{
id: 1234,
time: '1:23'
}
time просмотренного видео меньше time выводимого видео
style="width: ПОЛУЧЕННЫЙ_ПРОЦЕНТ%"
add_action( 'woocommerce_new_order', 'create_invoice_for_wc_order', 1, 1 );
function create_invoice_for_wc_order( $order_id ) {
$order = new WC_Order( $order_id );
$items = $order->get_items();
// etc...
}