Mekaeil Andisheh

تداخل کامنت پست ها با هم

7 پست در این موضوع قرار دارد

سلام.

من نیاز دارم که نظرات پست های سفارشی رو در صفحه index.php نمایش بدم و با استفاده از کد زیر تونستم اینکار رو انجام بدم و درست کار میکنه


<?php $withcomments = "1"; comments_template(); ?>

ولی من میخوام دو نوع قالب نظرات برای قالبم داشته باشم آیا اینکار ممکن هست ؟؟

الان من جهت تست 2 تا کامنت برای یکی از پست های سفارشی ارسال کردم و نمایش داده میشه در صفحه اصلی ولی وقتی وارد هر صفحه ی تکی یعنی single میشم نظرات مربوط به اون پست رو نمایش میده یعنی اگر برای پستی حتی نظری ارسال نشده باشه بازم نظر پست قبلی رو نشون میده و اصلا نمیتونم برای پست های پیشفرض وردپرس قسمت نظردهی قرار دهم با هم قاطی میکنه

ممنون میشم راهنمایی بفرمائید

0

به اشتراک گذاری این پست


لینک به پست

من درست متوجه مشکل نشدم

برای نمایش نظرات در صفحه اصلی این کد را استفاده کنید


<?php
$comments = get_comments(array('post_id' => $id));
wp_list_comments(array('per_page' => 4), $comments);
?>

بجای 4 تعداد نظراتی که می خواهید نمایش داده شود را بگذارید

مشکل صفحه single.php الان دقیقا چیه ؟

صفحه comments.php دارید یا خیر اگر ندارید با کدهای مشابه کد زیر بسازید

<?php

// 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() ) { ?>

<div>

<p class="nocomments"><?php _e('This post is password protected. Enter the password to view comments.', 'kubrick'); ?></p>

<div class="clear"></div>

</div>

<?php

return;

}

?>

<!-- You can start editing here. -->

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

<div class="post">

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

<?php

ob_start();

previous_comments_link(__('Newer Entries »', 'kubrick'));

$prev_comment_link = ob_get_clean();

ob_start();

next_comments_link(__('« Older Entries', 'kubrick'));

$next_comment_link = ob_get_clean();

?>

<?php if ($prev_comment_link || $next_comment_link): ?>

<div class="navigation">

<div class="alignleft">

<?php echo $next_comment_link; ?>

</div>

<div class="alignright">

<?php echo $prev_comment_link; ?>

</div>

</div>

<?php endif; ?>

<div class="clear"></div>

</div>

<ul class="commentlist">

<?php wp_list_comments('type=all'); ?>

</ul>

<?php if ($prev_comment_link || $next_comment_link): ?>

<div class="post">

<div class="navigation">

<div class="alignleft">

<?php echo $next_comment_link; ?>

</div>

<div class="alignright">

<?php echo $prev_comment_link; ?>

</div>

</div>

<div class="clear"></div>

</div>

<?php endif; ?>

<?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. -->

<?php if (!is_page()) : ?>

<div class="post">

<p class="nocomments"><?php _e('Comments are closed.', 'kubrick'); ?></p>

<div class="clear"></div>

</div>

<?php endif; ?>

<?php endif; ?>

<?php endif; ?>

<?php if ('open' == $post->comment_status) : ?>

<div class="post">

<div id="respond">

<h3><?php comment_form_title( __('Leave a Reply', 'kubrick'), __('Leave a Reply for %s', 'kubrick') ); ?></h3>

<div class="cancel-comment-reply">

<small><?php cancel_comment_reply_link(); ?></small>

</div>

<?php if ( get_option('comment_registration') && !$user_ID ) : ?>

<p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'kubrick'), get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode(get_permalink())); ?></p>

<?php else : ?>

<?php comment_form(); ?>

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

</div>

<div class="clear"></div>

</div>

<?php endif; // if you delete this the sky will fall on your head ?>

اگر مشکل باقی بود بفرمایید

3

به اشتراک گذاری این پست


لینک به پست

سلام

ممنون از راهنماییتون .

من توی صفحه اصلی سایتم برای آخرین پست های سفارشیم، کنار خود نوشته هم نظرات کاربران و هم افزودن نظر رو نشون میده یعنی کاربر میتونه توی صفحه اصلی هم نظرات رو ببینه و هم اضافه کنه و تعدادش هم محدود نیست. این عکس رو ببینید :

post-2281-0-37912700-1397889438_thumb.pn

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

ولی توی کدی که شما فرمودید وقتی اضافه کردم این عکس که بالا اشاره کردم حذف شد.

حالا مشکل من اینه که من میخوام دو تا قالب نظر داشته باشم مثلا وقتی میتونیم برای single پست های سفارشی single-products.php رو داشته باشیم آیا میشه برای کامنت هم همچین کاری کرد ؟ یک قالب برای صفحه ایندکس و یک قالب برای صفحات single بسازم به شکل comments-single.php .

حالا که اینکار رو کردم تداخل کامنت پیش میاد .

ممنون میشم بفرمائید به چه سبکی انجامش بدم. تشکر

ویرایش شده در توسط Mekaeil Andisheh
0

به اشتراک گذاری این پست


لینک به پست

من درست متوجه مشکل نشدم

برای نمایش نظرات در صفحه اصلی این کد را استفاده کنید


<?php
$comments = get_comments(array('post_id' => $id));
wp_list_comments(array('per_page' => 4), $comments);
?>

[/longbox]

اگر مشکل باقی بود بفرمایید

سلام مجدد / من مشکل قالب کامنت رو حل کردم الان کد زیر استفاده میکنم :

<?php

/**

*/

?>

<footer class="footerPro col-lg-12 col-md-12 col-sm-12 col-xs-12">

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

<p class="nopassword"><?php _e( 'This post is password protected. Enter the password to view any comments.', 'atrebartar' ); ?></p>

</footer><!-- #comments -->

<?php

/* Stop the rest of comments.php from being processed,

* but don't kill the script entirely -- we still have

* to fully load the template.

*/

return;

endif;

?>

<h3 class="headercomment col-lg-6 col-md-6 col-sm-6 col-xs-6" >نظرات کاربران</h3>

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

<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?>

<nav id="comment-nav-above">

<h1 class="assistive-text"><?php _e( 'Comment navigation', 'atrebartar' ); ?></h1>

<div class="nav-previous"><?php previous_comments_link( __( '← Older Comments', 'atrebartar' ) ); ?></div>

<div class="nav-next"><?php next_comments_link( __( 'Newer Comments →', 'atrebartar' ) ); ?></div>

</nav>

<?php endif; // check for comment navigation ?>

<section id="comments-home" class="comments col-lg-12 col-md-12">

<aside>

<?php

/* Loop through and list the comments. Tell wp_list_comments()

* to use soheilsystem_comment() to format the comments.

* If you want to overload this in a child theme then you can

* define soheilsystem_comment() and that will be used instead.

* See soheilsystem_comment() in atrebartar/functions.php for more.

*/

wp_list_comments( array( 'callback' => 'atrebartar_comment' ) );

?>

</aside>

</section>

<?php if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?>

<nav id="comment-nav-below">

<h1 class="assistive-text"><?php _e( 'Comment navigation', 'atrebartar' ); ?></h1>

<div class="nav-previous"><?php previous_comments_link( __( '← Older Comments', 'atrebartar' ) ); ?></div>

<div class="nav-next"><?php next_comments_link( __( 'Newer Comments →', 'atrebartar' ) ); ?></div>

</nav>

<?php endif; // check for comment navigation ?>

<?php

/* If there are no comments and comments are closed, let's leave a little note, shall we?

* But we only want the note on posts and pages that had comments in the first place.

*/

if ( ! comments_open() && get_comments_number() ) : ?>

<p class="nocomments"><?php _e( 'Comments are closed.' , 'atrebartar' ); ?></p>

<?php endif; ?>

<?php else : ?>

<section id="comments-home" class="comments col-lg-12 col-md-12">

<aside>

<img alt="no-comments" src="<?php bloginfo('template_directory'); ?>/img/no-comments.png" >

<p>

دیدگاهی برای این محصول در حال حاضر وجود ندارد.

سوال یا دیدگاه اول را شما مطرح نمائید.

</p>

</aside>

</section>

<?php endif; // have_comments() ?>

<!--**** send comment ***-->

<h3 class="headeradd col-lg-6 col-md-6 col-sm-6 col-xs-6" >افزودن نظر</h3>

<section id="addcomments-home" class=" col-lg-12 col-md-12">

<?php

// Custome Comment Form

$com_args = array(

'label_submit'=>'ارسال نظر',

'class' => 'submit',

'id_submit' => 'submit-index',

'fields' => '

<input id="author" class="inputbg" name="author" type="text" value="'.$commenter['comment_author'].'" placeholder="لطفا نام خود راوارد نمائید" required aria-required="true">

<input id="email" class="inputbg" name="email" type="text" value="'.$commenter['comment_author_email'].'" placeholder="لطفا ایمیل خود را وارد نمائید" required aria-required="true">

<input id="url" class="inputbg" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" placeholder="وبلاگ / وبسایت" >

',

'comment_field' => '

<textarea id="message" name="comment" class="sendcomment" rows="4" col="40" name="comment" aria-required="true">

</textarea>

',

'comment_notes_after' => '',

'comment_notes_before' => ''

);

// Generate Custome Form with $com_args options

comment_form($com_args); ?>

</section>

<!-- #comments -->

و برای فراخوانی در صفحه اصلی از کد زیر استفاده میکنم: ( از کدی که فرمودید استفاده کردم مشکل داشت)


<?php $withcomments = "1"; comments_template('',true); ?>

و برای فراخوانی در صفحه single از کد زیر استفاده میکنم :


<?php comments_template('',true); ?>

الان اصلی ترین مشکل من اینه که وقتی کامنتی برای مطالب پیش فرض یعنی قسمت نوشته ها ارسال میکنم این کامنت ها برای همه مطالب نمایش داده میشه و برای یکی از پستهای سفارشی هم نمایش داده میشه نمیدونم چرا کامنت ها رو با هم قاطی میکنه

ویرایش شده در توسط Black_sky
:برای کدهای بلند از longbox استفاده کنید
0

به اشتراک گذاری این پست


لینک به پست

دو امکان هست یا فرمتون ایراد داره یا حلقه

این کدهای ساخت حلقه ی نمایش نظراته


if ($comments) :
<?php $comment_count = get_comment_count($post->ID); echo $comment_count['approved']; ?> Comments
<ul class="commentlist">
<?php foreach( $comments as $comment ) :
// stuff to display the comment in an LI here
endforeach;
?></ul>
<?php else :
if ('open' == $post->comment_status) :
// If comments are open, but there are no comments.
else :
// comments are closed
endif;
endif;

منبع

https://codex.wordpress.org/Migrating_Plugins_and_Themes_to_2.7/Enhanced_Comment_Display#The_Comments_Loop

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

2

به اشتراک گذاری این پست


لینک به پست

دو امکان هست یا فرمتون ایراد داره یا حلقه

این کدهای ساخت حلقه ی نمایش نظراته

واقعا گیج شدم من قبلا اینکار رو کرده بودم به همچین مشکلی برنخوردم.

الان حتی رفتم کامنت های theme پیشفرض وردپرس 2012 ، رو گذاشتم باز هم همین مشکل رو داره

اون که بی مشکله پس مشکل از کجا میتونه باشه ؟؟ امکان داره از توابع function باشه ؟

حتی کامنت های قسمت نوشته ها رو هم با هم قاطی میکنه فقط پست های سفارشی نیست

فایل comments.php رو پیوست کردم خدمتتون

comments.php

این هم فایل قسمت function :

// comment function

function atrebartar_comment( $comment, $args, $depth ) {

$GLOBALS['comment'] = $comment;

switch ( $comment->comment_type ) :

case 'pingback' :

case 'trackback' :

?>

<aside class="post pingback">

<p><?php _e( 'Pingback:', 'atrebartar' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( 'Edit', 'atrebartar' ), '<span class="edit-link">', '</span>' ); ?></p>

<?php

break;

default :

?>

<aside id="comment-<?php comment_ID(); ?>" class="comment-item ">

<?php

$avatar_size = 68;

if ( '0' != $comment->comment_parent )

{

$avatar_size = 39;

echo get_avatar( $comment, $avatar_size );

}

else ?>

<img src="<?php bloginfo("template_directory"); ?>/css/img/gravatar.png">

<header>

<p>

<?php

/* translators: 1: comment author, 2: date and time */

printf( __( '%1$s در %2$s ', 'atrebartar' ),

sprintf( '<span class="fn author-name">%s</span>', get_comment_author_link() ),

sprintf( '<time pubdate datetime="%2$s">%3$s</time>',

esc_url( get_comment_link( $comment->comment_ID ) ),

get_comment_time( 'c' ),

/* translators: 1: date, 2: time */

sprintf( __( '%1$s', 'atrebartar' ), get_comment_date())

)

);

?>

</p>

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

<em class="comment-awaiting-moderation"><?php _e( 'نظر شما پس از تایید نمایش داده میشود.', 'atrebartar' ); ?></em>

<br />

<?php endif; ?>

</header>

<?php comment_text(); ?>

</aside> <!-- #comment-## -->

<?php

break;

endswitch;

}

ویرایش شده در توسط Black_sky
برای کدهای بلند از longbox استفاده کنید
0

به اشتراک گذاری این پست


لینک به پست

مشکل کامنت رو پیدا کردم

آقای فخار عزیز سپاسگزارم از راهنماییتون

من توی single یکسری از پست های سفارشی رو فراخوانی کرده بودم و query با نوشته قاطی میشد و توی کدها query رو reset نکرده بود


wp_reset_query();

2

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری