Intereting Posts
Как заменить или отобразить специальные символы из плагина JSON API Написание PHP-кода на страницах без проблем? Как увидеть файл wp-config из панели управления WordPress? Как отображать виджет по идентификатору Создание короткого кода с параметром Предупреждение при попытке изменить / добавить пользовательский тип сообщения Иерархическая таксономия в структуре постоянных ссылок Вызов настраиваемого поля из параметра темы в интерфейсе Как скрыть, а не удалять атрибуты metabox? WordPress SQL-запрос для размещения всех сообщений, содержащих определенное слово в заголовке Удалить теги из wordpress head Как использовать функцию add_query_arg в теге шаблона, таком как previous_post_link? Шаблон, включенный в плагин, не возвращает все сообщения для пользовательской таксономии Создание настраиваемого URL-адреса для асинхронного содержимого Проблема с перенаправлением URL

комментарии перехватывает пользовательский тип сообщения

Во-первых, это то, чего я хочу достичь:

Я хочу добавить комментарий к CPT, который просит пользователей зарегистрироваться и войти в систему, чтобы оставлять комментарии. И после того, как пользователь войдет в систему, чтобы отобразить два настраиваемых поля перед полем комментария.

Мои параметры обсуждения не установлены на * Пользователи должны быть зарегистрированы и войти в систему, чтобы комментировать *, потому что на моих полях блога по умолчанию я не хочу заставлять пользователей регистрироваться, чтобы комментировать.

Вот что я сделал до сих пор:

function debate_comment_fields( $fields ) { if( is_singular( 'debate' ) ) { // these are the custom fields which I want to display before the comment field $fields['first'] = '<p class="comment-form-first"><label for="first">' . __( 'HTML5' ) . '</label>' . '<input id="first" name="category" type="radio" value="'.get_post_meta($post->ID, 'agree', true).'" /></p>'; $fields['second'] = '<p class="comment-form-second"><label for="second">' . __( 'FLASH' ) . '</label>' . '<input id="second" name="category" type="radio" value="'.get_post_meta($post->ID, 'disagree', true).'" /></p>'; return $fields; } else { return $fields; } } add_filter('comment_form_default_fields','debate_comment_fields'); 

Я просмотрел CODEX, и я нашел этот comment_form_must_log_in_after но это не помогает мне, потому что мне нужно сначала добавить крючок, который просит пользователя войти в систему.

Я также посмотрел на mytheme / comments.php, вот фрагмент:

  <div id="comments" class="comments-area"> <?php if ( have_comments() ) : ?> <h3 class="comments-title"> <?php printf( _n('%d comment', '%d comments', get_comments_number(), 'outbox' ), number_format_i18n( get_comments_number() ) ); ?> </h3> <ol class="commentlist"> <?php wp_list_comments( array( 'callback' => 'outbox_comment' ) ); ?> </ol><!-- .commentlist --> <?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through? If so, show navigation ?> <nav role="navigation" id="comment-nav-below" class="site-navigation comment-navigation clearfix"> <div class="nav-previous"><i class="icon-left-open-1"></i>&nbsp;<?php echo get_previous_comments_link( __( 'Older Comments', 'outbox' ) ); ?></div> <div class="nav-next"><?php echo get_next_comments_link( __( 'Newer Comments', 'outbox' ) ); ?>&nbsp;<i class="icon-right-open-1"></i></div> </nav><!-- #comment-nav-below .site-navigation .comment-navigation --> <?php endif; ?> <?php endif; // have_comments() ?> <?php // If comments are closed and there are comments, let's leave a little note, shall we? if ( ! comments_open() && '0' != get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) : ?> <p class="nocomments"><?php _e( 'Comments are closed.', 'outbox' ); ?></p> <?php endif; ?> <?php comment_form(); ?> 

Это «must_log_in»:

  'must_log_in' => '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>', 

Любая идея о том, как я могу это достичь?

Спасибо!

Solutions Collecting From Web of "комментарии перехватывает пользовательский тип сообщения"

Один из альтернатив – просто не отображать поле комментариев, если текущий пользователь не зарегистрирован, используя is_user_logged_in() .

Например, внутри шаблона комментариев:

 <?php comment_form( $args ); ?> 

Просто оберните это условным:

 <?php // Don't output the comment form if CPT and user isn't logged in if ( 'debate' != get_post_type() || is_user_logged_in() ) { comment_form( $args ); } ?> 

редактировать

Просто поместите его в шаблон напрямую:

 <?php // If CPT and not logged in, display a message: if ( 'debate' == get_post_type() && ! is_user_logged_in() ) { echo '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>'; } ?>