tokmak
  • 0
Новичок

Как реализовать функцию комментариев WordPress?

  • 0

У меня есть цикл, который создает новостную ленту, это выглядит так:

(часть шаблона новостей)

Новости.php

        <div id="content">
        <div class="scrollArea">
            <?php query_posts('category_name=News');?>
            <?php  if (have_posts()) : while (have_posts()) : the_post(); ?>
                    <div class="news_block">
                        <p class="news_title"><?php the_title(); ?></p>
                        <p class="news_date"><?php the_time('F jS, Y'); ?></p>
                        <p class="news_text"><?php the_content(); ?></p>
                        <a href="<?php comments_link(); ?>">Comments to this post     (<?php comments_number('0', 'One Response', '%' ); ?>) </a>
                    </div>
            <?php endwhile;?>
            <?php endif; ?>        
        </div>

        </div>
  <div class="news_right"></div>
 </div> 
<?php
    get_footer(); 
?>   

Комментарии.php

<?php
/**
 * @package WordPress
 * @subpackage Starkers HTML5
 */
// Do not delete these lines
        if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' ==         basename($_SERVER['SCRIPT_FILENAME']))
        die ('Please do not load this page directly. Thanks!');

    if ( post_password_required() ) { ?>
        <p class="alert">This post is password protected. Enter the password to    view comments.</p>
        <?php
        return;
    }
?>

    <!-- You can start editing here. --> <--edit from here-->
<?php get_header();
get_template_part('nav');  ?>
<div id="content">
        <div class="scrollArea">
   <--end editing heret-->

<?php if ( have_comments() ) : ?>

    <h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to “<?php the_title(); ?>”</h3>

    <?php previous_comments_link() ?> <?php next_comments_link() ?>

    <!-- View functions.php for comment markup -->
    <?php wp_list_comments('callback=html5_comment&end-callback=close_comment'); ?>

    <?php previous_comments_link() ?> <?php next_comments_link() ?>

<?php else : // this is displayed if there are no comments so far ?>

    <?php if ( comments_open() ) : ?>
    <!-- If comments are open, but there are no comments. -->

 <?php else : // comments are closed ?>
    <!-- If comments are closed. -->
    <p class="nocomments">Comments are closed.</p>

<?php endif; ?>

<h3 id="respond"><?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></h3>

<p class="cancel-comment-reply"><?php cancel_comment_reply_link(); ?></p>

<?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?>
<p>You must be <a href="<?php echo wp_login_url( get_permalink() ); ?>">logged in</a> to post a comment.</p>
<?php else : ?>

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">

    <?php if ( is_user_logged_in() ) : ?>

    <p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out &raquo;</a></p>

    <?php else : ?>

    <p><input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" <?php if ($req) echo "required"; ?> />
    <label for="author">Name <?php if ($req) echo "(required)"; ?></label></p>

    <p><input type="email" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" <?php if ($req) echo "required"; ?> />
    <label for="email">Mail (will not be published) <?php if ($req) echo "(required)"; ?></label></p>

    <p><input type="url" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" />
    <label for="url">Website</label></p>

    <?php endif; ?>

    <!--<p><strong>XHTML:</strong> You can use these tags: <code><?php echo allowed_tags(); ?></code></p>-->

    <textarea name="comment" id="comment" cols="50" rows="10" required></textarea>

    <button type="submit" name="submit" id="send">Submit Comment</button>

    <?php comment_id_fields(); ?>

    <?php do_action('comment_form', $post->ID); ?>

</form>

<?php endif; // If registration required and not logged in ?>

 </div> 
    <?php get_footer(); ?>

Ссылка на комментарии работает нормально, комментарии появляются внутри «контента» контейнера и выглядят хорошо. но предыдущая, текущая и следующая записи отображаются за пределами контейнера «контент», после заголовка и перед всем остальным контентом. Я внес изменения только в шаблон новостной страницы и файл my_theme/comments.php. (теги «редактировать отсюда» и «завершить редактирование здесь») Какие файлы мне нужно изменить еще? В чем может быть проблема?

Share
  1. «предыдущие, текущие и следующие сообщения» : вы говорите о комментариях или сообщениях? Ссылки на них или сам контент? Можете ли вы отредактировать свой вопрос, включив в него полученный HTML-вывод и код шаблона, который (как вы думаете) его генерирует? Включите имя файлов шаблонов. (Используйте @Jan, когда вы отвечаете мне в комментарии, и я получаю уведомление)

    • 0
    • Почему вы звоните get_footer() внутри comments.php? Кроме того, куда вы звоните comments_template() внутри «news.php»?

      • 0
    • @Jan: О сообщениях, когда я открываю страницу с комментариями к последнему сообщению, текущему, предыдущему сообщению и сообщению из другой категории (полный текст сообщений) появляется после заголовка и перед основным содержанием, текст этих сообщений является ссылками на список комментариев эти посты! Когда я открываю страницу с комментариями не к последнему сообщению, предыдущие, текущие и следующие сообщения появляются после заголовка и перед основным содержанием, этот текст сообщений также является ссылками на список комментариев к этим сообщениям! Извините за неточность ранее!

      • 0
  2. Используйте comment_form(), а не самодельный код. См. ответы на вопрос 15179 для рабочего примера comment.php.

    • 0
  3. http://codex.wordpress.org/Next_and_Previous_Links

    Пожалуйста, прочитайте Кодекс WordPress, это поможет.

    • 0

Оставить ответ

You must login to add an answer.