رفتن به مطلب

مشکل در ویرایش comments.php


پست های پیشنهاد شده

دوستان سلام

من می خواهم چند ویژگی زیر را به فایل comments.php اضافه کنم

1- دیدگاه های تو در تو فعال شوند (در حال حاظر وقتی پاسخی به دیدگاهی داده میشود به صورت یک تگ li بعد از قبلی ساخته می شود که نمی گذارد به هم مرتبط شوند)

2- دکمه پاسخ به نظرات ( وقتی کد


<?php comment_reply_link( $args, $comment, $post ); ?>

را به فایل اضافه می کنم هیچ تغییری ایجاد نمی شود و دکمه پاسخ به نظرات دیدده نمی شود. )

محتویات فایل comments.php


<?php // Do not delete these lines
if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) die ('Please do not load this page directly. Thanks!');
if (!empty($post->post_password)) { // if there's a password
if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie
?>
<h2><?php _e('Password Protected'); ?></h2>
<p><?php _e('Enter the password to view comments.'); ?></p>
<?php return;
}
}
/* This variable is for alternating comment background */
$oddcomment = 'alt';
?>
<!-- You can start editing here. -->
<?php if ($comments) : ?>
<ol class="commentlist">
<?php foreach ($comments as $comment) : ?>
<li class="<?php
/* Only use the adminComment class from style.css if the user_id is 1 (admin) */
if (1 == $comment->user_id)
$oddcomment = "adminComment";
echo $oddcomment;
?>" id="comment-<?php comment_ID() ?>">
<figure class="gravatar">
<?php if(function_exists('get_avatar')) { echo get_avatar($comment, '70'); } ?>
</figure>
<div class="commentmetadata">
<?php comment_author_link() ?>
<span class="comment-date"><?php comment_date('j F Y') ?></span>
<?php if ($comment->comment_approved == '0') : ?>
<em><?php _e('Your comment is awaiting moderation.'); ?></em>
<?php endif; ?>
</div>
<?php comment_text() ?>
</li>
<?php /* Changes every other comment to a different class */
if ('alt' == $oddcomment) $oddcomment = '';
else $oddcomment = 'alt';
?>
<?php endforeach; /* end for each comment */ ?>
</ol>
<?php else : // this is displayed if there are no comments so far ?>
<?php if ('open' == $post->comment_status) : ?>
<!-- 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; ?>
<?php endif; ?>

<?php if ('open' == $post->comment_status) : ?>
<h3 id="respond">نظر بدهید</h3>
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_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">
<p class="comment-desc">
لطفا فقط در مورد این مطلب نظر دهید. اگر سوال علمی دارید آن را می توانید در سامانه پرسش و پاسخ علمی دنوج مطرح کنید. اگر می خواهید در کنار نظر خود آواتار خود را به نمایش بگذارید می توانید از سایت <a href="https://fa.gravatar.com/" rel="nofollow">گراوتار</a> استفاده کنید.
</p>
<?php if ( $user_ID ) : ?>
<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout »</a></p>
<?php else : ?>
<div class="fields-box">
<p>
<label for="author"><small>نام (لازم)</small></label>
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="40" tabindex="1" />
</p>
<p>
<label for="email"><small>ايميل (لازم)</small></label>
<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="40" tabindex="2" />
</p>
<p>
<label for="url"><small>سايت</small></label>
<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="40" tabindex="3" />
</p>
</div>
<?php endif; ?>
<div class="message-box">
<label for="comment"><small>نظر شما</small></label>
<textarea name="comment" id="comment" cols="60" rows="10" tabindex="4"></textarea>
<p id="submit-form">
<input name="submit" type="submit" id="submit" tabindex="5" value="ارسال نظر" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
</p>
</div>
<?php do_action('comment_form', $post->ID); ?>
</form>
<?php endif; // If registration required and not logged in ?>
<?php endif; // if you delete this the sky will fall on your head ?>

ویرایش شده توسط سعید شعبانی
لینک به ارسال

خوب قبلا هم بارها توضیح دادیم :)

باید از تابع wp_comment_list استفاده بشه

آموزشش هم ماشاله زیاد توی انجمن قرار دادم!

لینک به ارسال

خوب قبلا هم بارها توضیح دادیم :)

باید از تابع wp_comment_list استفاده بشه

آموزشش هم ماشاله زیاد توی انجمن قرار دادم!

جای چی باید از تابع wp_comment_list استفاده بشه؟ آموزشش هم پیدا نکردم

ویرایش شده توسط سعید شعبانی
لینک به ارسال

خوب من الان برای بخش کامنت ها از کد زیر استفاده کردم ولی چجوری میشه اون رو شخصی سازی کرد مثلا اندازه آواتار


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

لینک به ارسال

مثالش در فایلها هست

در آرگومان callback تابعی رو باید فراخوانی کنید

لینک به ارسال

من کد زیر را داخل فانکشن قرار دادم و به کامنت ها استایل دادم



<?php
function mytheme_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment;
extract($args, EXTR_SKIP);
if ( 'div' == $args['style'] ) {
$tag = 'div';
$add_below = 'comment';
} else {
$tag = 'لli';
$add_below = 'div-comment';
}
?>
<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">
<?php if ( 'div' != $args['style'] ) : ?>
<div id="div-comment-<?php comment_ID() ?>" class="<?php
/* Only use the adminComment class from style.css if the user_id is 1 (admin) */
if (1 == $comment->user_id)
$oddcomment = "adminComment";
echo $oddcomment;
?>">
<?php endif; ?>
<div class="comments-top">
<figure class="gravatar">
<?php if(function_exists('get_avatar')) { echo get_avatar($comment, '70'); } ?>
</figure>
<div class="commentmetadata">
<?php comment_author_link() ?>
<span class="comment-date"><?php comment_date('j F Y') ?></span>
<?php if ($comment->comment_approved == '0') : ?>
<em class="comment-awaiting-moderation"><?php _e('Your comment is awaiting moderation.') ?></em>

<?php endif; ?>
</div>
</div>
<div class="commentdata">
<?php comment_text() ?>
</div>
<div class="reply">
<?php comment_reply_link(array_merge( $args, array('add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
</div>
<?php if ( 'div' != $args['style'] ) : ?>
</div>

<?php endif; ?>
<?php
}

ولی امروز که چک کردم می بینم که بالای سر هر کامنت یک کد مثل زیر چاپ شده میشه بگید مشکلش چی هست؟


li class="comment even thread-even depth-1 parent" id="comment-142">

این هم کد های فایل comments.php


<?php // Do not delete these lines
if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) die ('Please do not load this page directly. Thanks!');
if (!empty($post->post_password)) { // if there's a password
if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie
?>
<h2><?php _e('Password Protected'); ?></h2>
<p><?php _e('Enter the password to view comments.'); ?></p>
<?php return;
}
}
/* This variable is for alternating comment background */
$oddcomment = 'alt';
?>
<!-- You can start editing here. -->
<ol class="commentlist">
<?php wp_list_comments('callback=mytheme_comment'); ?>
</ol>
<?php if ('open' == $post->comment_status) : ?>
<h3 id="respond">نظر بدهید</h3>
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_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">
<p class="comment-desc">
لطفا فقط در مورد این مطلب نظر دهید. اگر سوال علمی دارید آن را می توانید در سامانه پرسش و پاسخ علمی دنوج مطرح کنید. اگر می خواهید در کنار نظر خود آواتار خود را به نمایش بگذارید می توانید از سایت <a href="https://fa.gravatar.com/" rel="nofollow">گراوتار</a> استفاده کنید.
</p>
<?php if ( $user_ID ) : ?>
<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout »</a></p>
<?php else : ?>
<div class="fields-box">
<p>
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="40" tabindex="1" placeholder="نام (لازم)" />
</p>
<p>
<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="40" tabindex="2" placeholder="ايميل (لازم)" />
</p>
<p>
<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="40" tabindex="3" placeholder="سايت" />
</p>
</div>
<?php endif; ?>
<textarea name="comment" id="comment" placeholder="نظر شما..." ></textarea>
<input name="submit" type="submit" id="submit" tabindex="5" value="ارسال نظر" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />

<?php do_action('comment_form', $post->ID); ?>
</form>
<?php endif; // If registration required and not logged in ?>
<?php endif; // if you delete this the sky will fall on your head ?>

ویرایش شده توسط سعید شعبانی
لینک به ارسال

این اشتباه هست:

$tag = 'لli';

وقتی به صورت زیر هم باشه همون مشکل یاز هست


$tag = 'li';

لینک به ارسال

شما خط زیر:

<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">

رو بصورت زیر تغییر بدید ببینید تغییری میکنه؟

<<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">

لینک به ارسال

شما خط زیر:

<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">

رو بصورت زیر تغییر بدید ببینید تغییری میکنه؟

<<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">

فکر کنم مشکلش از همین خط بود چون الان درست شد. من فکر کردم چون دوتا علامت >> , اول کد هست اشتباهی وجود داره بعد این رو حذف کردم. چرا حالا باید دوتا >> باشه؟

لینک به ارسال

الان بالای نظرات هیچ عنوانی وجود نداره چحوری باید عنوان را در کد های comments.php یا فانکشن قرار بدم تا زمانی که فقط پست دارای نظر بود عنوان رو نشون بده؟

لینک به ارسال


$post->ID

اینجوری


<?php do_action( 'comment_form', <?php wp_count_comments( post_id ); ?> ); ?>

ویرایش شده توسط سعید شعبانی
لینک به ارسال

الان بالای نظرات هیچ عنوانی وجود نداره چحوری باید عنوان را در کد های comments.php یا فانکشن قرار بدم تا زمانی که فقط پست دارای نظر بود عنوان رو نشون بده؟

برای راه حل

ابتدا باید صوال رو فهمید

سوال شما از شرط حرف میزنه

پس باید شرط قرار دهید


if(wp_count_comments( post_id ))
echo 'title';

شناسه پست را هم ارسال کنید به تابع

لینک به ارسال

برای راه حل

ابتدا باید صوال رو فهمید

سوال شما از شرط حرف میزنه

پس باید شرط قرار دهید


if(wp_count_comments( post_id ))
echo 'title';

شناسه پست را هم ارسال کنید به تابع

ببخشید سوالم شفاف نبود یک بار دیگه توضیح می دم

من الان در فایل single.php کد زیر را گذاشتم


<?php comments_template(); ?>

بعد فایل comments.php به شکل زیر هست


<?php // Do not delete these lines
if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) die ('Please do not load this page directly. Thanks!');
if (!empty($post->post_password)) { // if there's a password
if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie
?>
<h2><?php _e('Password Protected'); ?></h2>
<p><?php _e('Enter the password to view comments.'); ?></p>
<?php return;
}
}
/* This variable is for alternating comment background */
$oddcomment = 'alt';
?>
<!-- You can start editing here. -->
<ol class="commentlist">
<?php wp_list_comments('callback=mytheme_comment'); ?>
</ol>
<?php if ('open' == $post->comment_status) : ?>
<h3 id="respond">نظر بدهید</h3>
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_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">
<p class="comment-desc">
لطفا فقط در مورد این مطلب نظر دهید. اگر سوال علمی دارید آن را می توانید در سامانه پرسش و پاسخ علمی دنوج مطرح کنید. اگر می خواهید در کنار نظر خود آواتار خود را به نمایش بگذارید می توانید از سایت <a href="https://fa.gravatar.com/" rel="nofollow">گراوتار</a> استفاده کنید.
</p>
<?php if ( $user_ID ) : ?>
<p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Logout »</a></p>
<?php else : ?>
<div class="fields-box">
<p>
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="40" tabindex="1" placeholder="نام (لازم)" />
</p>
<p>
<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="40" tabindex="2" placeholder="ايميل (لازم)" />
</p>
<p>
<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="40" tabindex="3" placeholder="سايت" />
</p>
</div>
<?php endif; ?>
<textarea name="comment" id="comment" placeholder="نظر شما..." ></textarea>
<input name="submit" type="submit" id="submit" tabindex="5" value="ارسال نظر" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />

<?php do_action('comment_form', $post->ID); ?>
</form>
<?php endif; // If registration required and not logged in ?>
<?php endif; // if you delete this the sky will fall on your head ?>

داخل فانکشن هم کد زیر را قرار دادم


<?php
function mytheme_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment;
extract($args, EXTR_SKIP);
if ( 'div' == $args['style'] ) {
$tag = 'div';
$add_below = 'comment';
} else {
$tag = 'li';
$add_below = 'div-comment';
}
?>
<<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>">
<?php if ( 'div' != $args['style'] ) : ?>
<div id="div-comment-<?php comment_ID() ?>" class="<?php
/* Only use the adminComment class from style.css if the user_id is 1 (admin) */
if (1 == $comment->user_id)
$oddcomment = "adminComment";
echo $oddcomment;
?>">
<?php endif; ?>
<div class="comments-top">
<figure class="gravatar">
<?php if(function_exists('get_avatar')) { echo get_avatar($comment, '70'); } ?>
</figure>
<div class="commentmetadata">
<?php comment_author_link() ?>
<span class="comment-date"><?php comment_date('j F Y') ?></span>
<?php if ($comment->comment_approved == '0') : ?>
<em class="comment-awaiting-moderation"><?php _e('Your comment is awaiting moderation.') ?></em>

<?php endif; ?>
</div>
</div>
<div class="commentdata">
<?php comment_text() ?>
</div>
<div class="reply">
<?php comment_reply_link(array_merge( $args, array('add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
</div>
<?php if ( 'div' != $args['style'] ) : ?>
</div>

<?php endif; ?>
<?php
}

حالا زمانی که پستی نظر داشت می خواهم بالای نظرات یک عنوان بنویسم بعد این عنوان فقط برای مواقعی که پست نظر داشت ظاهر بشه

لینک به ارسال

خب راه حل گفته شد

من کد زیر را در فایل comments.php گذاشتم ولی برای مطالبی که نظر هم ندارند متن را نشان می دهد. این کد را باید کجا یگذارم تا درست جواب بده؟


<?php
if(wp_count_comments( post_id ))
echo 'title';
?>

لینک به ارسال

شما این کدها رو از پوسته ی خاصی گرفتید یا اینکه خودتون از تاپیک ها جمع کردید؟

چون کدهای استاندارد اصلی نیستن.

لینک به ارسال

شما این کدها رو از پوسته ی خاصی گرفتید یا اینکه خودتون از تاپیک ها جمع کردید؟

چون کدهای استاندارد اصلی نیستن.

از تاپیک ها و آموزش های مختلف کد ها را جمع کردم. اگر میشه هر سه کد استاندارد زیر را اینجا بگذارید

1- کدی که باید در single.php بگذارم

2- کد های استاندارد comments.php به همراه مدل دیدگاه های تو در تو

3- کد های مربوط به دیدگاه های تو در تو که باید در فانکشن قرار بگیرد

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...