رفتن به مطلب

مشکل با نمایش نظرات خارج از حلقه loop


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

با عرض سلام خدمت دوستان

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

من از کد زیر در Comments.php استفاده کردم :

<?php // Dont Access Directly To Page ?>

<?php if(!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) : ?>

<?php die('شما نمی توانید این صفحه را به صورت مستقیم مشاهده کنید .'); ?>

<?php endif; ?>

<?php // Check If password Required !?>

<?php if(!empty($post->post_password)) : ?>

<?php if($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) : ?>

<?php endif; ?>

<?php endif; ?>

<?php

if($comments) : ?>

<?php //comments_number('اولین نفری باشید که دیدگاه خود را می نویسد', 'تاکنون % دیدگاه برای این نوشته ثبت شده است . نفر بعدی شما باشید.', 'تاکنون % دیدگاه برای این نوشته ثبت شده است . نفر بعدی شما باشید.'); ?>

<?php foreach($comments as $comment) : ?>

<div class="row-fluid row-merge border-bottom border-top layout-timeline">

<div class="span1">

<div class="innerAll">

<div class="row-fluid">

<div class="span8">

<ul class="nav nav-pills nav-stacked nav-timeline">

</ul>

</div>

</div>

</div>

</div>

<div class="span11">

<div class="innerAll">

<ul class="timeline">

<li class="active">

<div class="separator bottom">

<span class="type glyphicons suitcase"><span class="time"></span></span>

</div>

<div class="widget widget-heading-simple widget-body-white margin-none">

<div class="widget-body">

<div class="media">

<div class="media-object pull-left thumb"><?php echo get_avatar($author_email,54); ?></div>

<div class="media-body">

<a class="author">

<?php comment_author($comment_ID); ?>

</a>

<br>

<span class="muted">

<?php comment_date('d M Y'); ?> - <?php comment_time(); ?>

<?php if ($comment->comment_approved == '0') : ?>

دیدگه شما منتظر بررسی و تایید مدیریت سایت می باشد .

<?php endif; ?>

</span>

</div>

</div>

<div class="alert alert-gray">

<p class="glyphicons circle_info margin-none"><?php comment_text(); ?></p>

</div>

<a class="glyphicons single pencil"></a>

</div>

</div>

</li>

</ul>

</div>

</div>

</div>

<?php endforeach; ?>

<?php else : ?>

<p>No comments yet</p>

<?php endif; ?>

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

<?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 echo urlencode(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($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">Log out »</a></p>

<?php else : ?>

<p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />

<label for="author"><small>Name <?php if($req) echo "(required)"; ?></small></label></p>

<p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />

<label for="email"><small>Mail (will not be published) <?php if($req) echo "(required)"; ?></small></label></p>

<p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />

<label for="url"><small>Website</small></label></p>

<?php endif; ?>

<p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p>

<p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />

<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /></p>

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

</form>

<?php endif; ?>

<?php else : ?>

<p>The comments are closed.</p>

<?php endif; ?>

ولی این کد نظرات مرتبط با نوشته رو نشون نمیده .

بعضی اوقات نظرات تصادفی رو میاره و بعضی اوقات همه نظرات رو

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


if($comments) : ?>

با تشکر

لینک به ارسال
  • 3 هفته بعد...

خوب اینکار اشتباه هست

مگر اینکه شما آی دی پست جاری رو بگیرید و بعد براساس اون دیدگاه ها رو لود کنید که کلا کار عجیب میشه!

لینک به ارسال

خوب اینکار اشتباه هست

مگر اینکه شما آی دی پست جاری رو بگیرید و بعد براساس اون دیدگاه ها رو لود کنید که کلا کار عجیب میشه!

با توجه به پوسته ام مجبورم که خارج از حلقه دیدگاه ها رو بارگزاری کنم

لینک به ارسال

همونطور که گفتند صفحه comments.php و comment_template در خارج از حلقه درست نیستند برای بیرون حلقه باید از کوئری استفاده کنید مثل


<?php
// WP_Comment_Query arguments
$args = array (
'post_id' => $post_id,
'number' => '-1',
'orderby' => 'comment_ID',
);
$comment_query = new WP_Comment_Query;
$comments = $comment_query->query( $args );
if ( $comments ) {
foreach ( $comments as $comment ) {

echo '<li id="comment'.$comment->comment_ID.'">';
echo '<cit>'.$comment->comment_author . ' : </cit>';
echo '<p class="date">' . $comment->comment_date . ' '. $comment->comment_time.'</p>';
echo '<p class="commentsContent">' . $comment->comment_content . '</p>';
echo '</li>';
}
}
?>

برای شخصی سازی و آشنایی با پارامترهاش بخونید

http://codex.wordpress.org/Class_Reference/WP_Comment_Query

برای ساخت کوئری با ژنراتور وردپرس برید به

http://generatewp.com/wp/wp_comment_query/

اما اینکه طراحی قالبتون نگذاره بخش نظرات وارد حلقه بشه خیلی مورد عجیبیه و قطعا قالب مشکل طراحی داره و الا در هر شکلی می شه بخش نظرات را در حلقه گنجاند

لینک به ارسال

با تشکر از شما دوستان خوب

مشکل حل شد

چون کد نمایش دیدگاه ها در صفحه single.php قرار داره می تونم به ID پست مرتبط دسترسی داشته باشم

مشکل این بود که من قبل از نمایش دیدگاه ها نوشته های مرتبط با پست و سپس نوشته های تصافی رو نشون می دادم و می بایست بعد از کوئری پست های تصادفی ، با تایع WP_RESET_QUERY کوئری رو ریسیت کنم

این کار رو انجام دادم و درست شد


<?php wp_reset_query(); ?>

ممنون از دوستانی که پیگیر بودن

لینک به ارسال

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

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

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

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

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

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

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

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

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