@Red_Klop

Как подключить функционал при определённом шаблоне записи WP?

Приветствую.
Весь код я приводить не буду, расскажу вкратце что мне нужно:
грубо говоря в файле function.php я написал код, для добавления рейтинга к каждому комментарию, но этот код мне нужно выводить только на на страницах с определенным шаблоном, вроде как я нашел нужное мне условие:
if ( is_page_template('school_template.php')) {
Но когда я делаю такую конструкцию функционал рейтинга перестает работать на всех страницах, подскажите в чём может быть проблема.
Весь код к сожалению не дает загрузить но к примеру первую его честь вы найдете под спойлером ниже:

код плагина рейтинга комментариев
//ДОБАВЛЯЕМ РЕЙТИНГ К КОММЕНТАРИЯМ
if ( is_page_template('school_template.php')) {
add_action( 'comment_form_logged_in_after', 'comm_rating_rating_field' );
add_action( 'comment_form_after_fields', 'comm_rating_rating_field' );
function comm_rating_rating_field () { ?>
<div class="com_block_star">
<label for="rating">Образование<span class="required">*</span></label>
<fieldset class="comments-rating">
<span class="rating-container">
            <?php for ( $i = 5; $i >= 1; $i-- ) : ?>
                <input type="radio" id="rating-<?php echo esc_attr( $i ); ?>" name="rating" value="<?php echo esc_attr( $i ); ?>" /><label for="rating-<?php echo esc_attr( $i ); ?>"><?php echo esc_html( $i ); ?></label>
            <?php endfor; ?>
<input type="radio" id="rating-0" class="star-cb-clear" name="rating" value="0" /><label for="rating-0">0</label>
</span>
</fieldset>
</div>
<div class="com_block_star">
<label for="rating">Преподаватели<span class="required">*</span></label>
<fieldset class="comments-rating">
<span class="rating-container">
            <?php for ( $i = 5; $i >= 1; $i-- ) : ?>
                <input type="radio" id="rating_1-<?php echo esc_attr( $i ); ?>" name="rating_1" value="<?php echo esc_attr( $i ); ?>" /><label for="rating_1-<?php echo esc_attr( $i ); ?>"><?php echo esc_html( $i ); ?></label>
            <?php endfor; ?>
<input type="radio" id="rating_1-0" class="star-cb-clear" name="rating_1" value="0" /><label for="rating_1-0">0</label>
</span>
</fieldset>
</div>
<div class="com_block_star">
<label for="rating">Атмосфера<span class="required">*</span></label>
<fieldset class="comments-rating">
<span class="rating-container">
            <?php for ( $i = 5; $i >= 1; $i-- ) : ?>
                <input type="radio" id="rating_2-<?php echo esc_attr( $i ); ?>" name="rating_2" value="<?php echo esc_attr( $i ); ?>" /><label for="rating_2-<?php echo esc_attr( $i ); ?>"><?php echo esc_html( $i ); ?></label>
            <?php endfor; ?>
<input type="radio" id="rating_2-0" class="star-cb-clear" name="rating_2" value="0" /><label for="rating_2-0">0</label>
</span>
</fieldset>
</div>
<div class="com_block_star">
<label for="rating">Инфраструктура<span class="required">*</span></label>
<fieldset class="comments-rating">
<span class="rating-container">
            <?php for ( $i = 5; $i >= 1; $i-- ) : ?>
                <input type="radio" id="rating_3-<?php echo esc_attr( $i ); ?>" name="rating_3" value="<?php echo esc_attr( $i ); ?>" /><label for="rating_3-<?php echo esc_attr( $i ); ?>"><?php echo esc_html( $i ); ?></label>
            <?php endfor; ?>
<input type="radio" id="rating_3-0" class="star-cb-clear" name="rating_3" value="0" /><label for="rating_3-0">0</label>
</span>
</fieldset>
</div>
<?php
}
}

  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
V_A_B
@V_A_B
¯\_(ツ)_/¯
Сначало регистрируете новый тип Например (vabcarousel):
5d381e618210e496141079.jpeg
Далее в Вашем шаблоне добавте строку (#Template post type: тут Ваш зарегистрированный тип) Например (vabcarousel):
5d381ec4abca9855320000.jpeg
Далее заходим в админку и в ней создаем запись:
5d381f06a209e933521874.jpeg
Указываем наш шаблон для записи:
5d381f1c965f9791674672.jpeg

далее к нашему шаблону добавляем поля Например:
add_action('comment_form_logged_in_after','add_custom_fields');
add_action('comment_form_after_fields','add_custom_fields');
function add_custom_fields(){
if(!is_page_template('school_template.php')){return;}
if(is_page_template('school_template.php')){

и в проверке указываете Ваш тип постов в моем случае на скрине vabcarousel
add_filter( 'preprocess_comment', 'comm_rating_require_rating' );
function comm_rating_require_rating( $commentdata ) {
  $post = get_post( $commentdata['comment_post_ID'] );

  if( $post->post_type == 'vabcarousel' ){
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Red_Klop Автор вопроса
Еще один вариант решения проблемы:

add_filter( 'preprocess_comment', 'comm_rating_require_rating' );
function comm_rating_require_rating( $commentdata ) {
  $post = get_post( $commentdata['comment_post_ID'] );
  $post_2 = get_page_template_slug($post->ID);
  
  if( $post_2 == 'school_template.php' ){//предполагается, что это созданный шаблон записи
  if (0 === intval( $_POST['rating'] )){//это нужно заменить на Вашу проверку
    wp_die('Ошибка: Вы не добавили оценку. Нажмите кнопку «Назад» в своем веб-браузере и повторно отправьте свой комментарий с оценкой.');
  }elseif(0 === intval( $_POST['rating_1'] )){
    wp_die('Ошибка: Вы не добавили оценку. Нажмите кнопку «Назад» в своем веб-браузере и повторно отправьте свой комментарий с оценкой.');
  }elseif(0 === intval( $_POST['rating_2'] )){
    wp_die('Ошибка: Вы не добавили оценку. Нажмите кнопку «Назад» в своем веб-браузере и повторно отправьте свой комментарий с оценкой.');
  }elseif(0 === intval( $_POST['rating_3'] )){
    wp_die('Ошибка: Вы не добавили оценку. Нажмите кнопку «Назад» в своем веб-браузере и повторно отправьте свой комментарий с оценкой.');
  }
  }
  return $commentdata;
}


Тут используется функция:

get_page_template_slug( );

Более подробно читайте в комментариях к вопросу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы