Question

I have been developing a custom wordpress theme from scratch and have run into a small problem with my comments.php file.

https://gist.github.com/phillipdews/dcebfec2016a93bd0169

I think the problem stems from line 44 of that file as when I try and leave a comment on my blog post whether logged in or not the comment processes by going to:

www.mydomain.com/postlink/wp-comments-post.php

When naturally it needs to go to:

www.mydomain.com/wp-comments-post.php

UPDATE

This is what i have decided to do! I started again from scratch and have coded out my comments.php file like this:

<div id="comments">
    <?php if ( post_password_required() ) : ?>
    <p>This post is password protected. Enter the password to view and comments</p>
</div>
<?php 
        return;
    endif;
?>
<?php if ( have_comments() ) : ?>
<ol>
    <?php wp_list_comments ( array( 'callback' => 'BRUM_Theme_comment') ); ?>
</ol>
<?php
    elseif ( ! comments_open() && ! is_page() && post_type_supports( get_post_type(), 'comments' ) ) :
?>
<p>Comments are closed</p>
<?php endif; ?>
<?php comment_form(); ?>
</div>

I then added this snippet of code to my functions.php file! This has so far made my comments appear and people are also able to leave comments on my blog post! but as yet the 'Reply to' button is not rendering.

<?php
function BRUM_Theme_comment( $comment, $args, $depth ){
    $GLOBALS['comment'] = $comment;
    ?>
    <?php if ( $comment->comment_approved == '1'): ?>
    <li>
        <article id="comment-<?php comment_ID() ?>">
            <?php echo get_avatar( $comment ); ?>
            <h4>
                <?php comment_author_link() ?>
            </h4>
            <time><a href="#comment-<?php comment_ID() ?>" pubdate><?php comment_date() ?> at <?php comment_time() ?></a></time>
            <?php comment_text() ?>
        </article>
        <?php endif;
}

That's it so far! once I got the Reply button working I will ammend the code!

Was it helpful?

Solution

Try this:

<div id="respond">

<?php

    if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
        die ('Please do not load this page directly. Thanks!');

    if ( post_password_required() ) { ?>
        This post is password protected. Enter the password to view comments.
    <?php
        return;
    }
?>

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

    <h2 id="comments"><?php comments_number('No comments', 'One comment', '% Comments' );?></h2>

    <div class="navigation">
        <div class="next-posts"><?php previous_comments_link() ?></div>
        <div class="prev-posts"><?php next_comments_link() ?></div>
    </div>

    <ol class="commentlist">
        <?php wp_list_comments(); ?>
    </ol>

    <div class="navigation">
        <div class="next-posts"><?php previous_comments_link() ?></div>
        <div class="prev-posts"><?php next_comments_link() ?></div>
    </div>

 <?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 ?>
        <p>Comments are closed.</p>

    <?php endif; ?>

<?php endif; ?>

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



    <h2><?php comment_form_title( 'Leave an reply', 'Leave a reply in %s' ); ?></h2>
    <div class="cancel-comment-reply">
        <?php cancel_comment_reply_link(); ?>
    </div>

    <?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 : ?>
<br class="c" />

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

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

            <p>Logged 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 : ?>


            <div>
                <input type="text" value="Name" onblur="if (this.value == '') {this.value = 'Name';}"  onfocus="if (this.value == 'Name')   {this.value = '';}" name="author" id="author" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> />
      </div>

            <div>
                <input type="text" value="Email" onblur="if (this.value == '') {this.value = 'Email';}"  onfocus="if (this.value == 'Email')   {this.value = '';}" name="email" id="email" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> />
            </div>

            <div>
                <input type="text" value="Website" onblur="if (this.value == '') {this.value = 'Website';}"  onfocus="if (this.value == 'Website')   {this.value = '';}" name="url" id="url" size="22" tabindex="3" />
            </div>  

        <?php endif; ?>

<br />
        <div>
            <textarea name="comment" id="comment" cols="58" rows="10" tabindex="4"></textarea>
        </div>
<br class="c" />
        <div>

        <input name="submit" type="submit" id="submit" tabindex="5" value="Send" />
            <?php comment_id_fields(); ?>
      </div>

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

    </form>

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

</div>

<?php endif; ?>

This may solve your issue in any Wordpress version since 3.1. Do not forget to put this code in your template folder (comments.php)

OTHER TIPS

That done the Job Lucas buddy! I had to tweak the code a little and remove the class from the OL and tweak my css as it was making the avatars 100% big and blury! So this is all I done to my css code in order to make the comments styled better:

#respond {float: left;}
#respond img {width: auto; height: auto; float: left; margin-right: 4px; border: 1px solid #aab59a; padding: 1px; border-radius: 10px;}
#respond ol li { background: #f1f1f1; margin:10px 0;padding:8px;border:2px solid #ccc;font-style:normal;list-style: none; border-radius: 10px;}

Also this is a nice feature that people can to their functions.php file as it makes the reply to link into reply to commentors name:

/*
 * Change the comment reply link to use 'Reply to &lt;Author First Name>'
 */
function add_comment_author_to_reply_link($link, $args, $comment){

    $comment = get_comment( $comment );

    // If no comment author is blank, use 'Anonymous'
    if ( empty($comment->comment_author) ) {
        if (!empty($comment->user_id)){
            $user=get_userdata($comment->user_id);
            $author=$user->user_login;
        } else {
            $author = __('Anonymous');
        }
    } else {
        $author = $comment->comment_author;
    }

    // If the user provided more than a first name, use only first name
    if(strpos($author, ' ')){
        $author = substr($author, 0, strpos($author, ' '));
    }

    // Replace Reply Link with "Reply to &lt;Author First Name>"
    $reply_link_text = $args['reply_text'];
    $link = str_replace($reply_link_text, 'Reply to ' . $author, $link);

    return $link;
}

add_filter('comment_reply_link', 'add_comment_author_to_reply_link', 10, 3);

Hope others find it useful and thanks again it's working brilliantly!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top