رفتن به مطلب

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


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

سلام.

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


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

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

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

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

لینک به ارسال

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

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


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

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

لینک به ارسال

سلام

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

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

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

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

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

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

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

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

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

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

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


<?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 استفاده کنید
لینک به ارسال

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

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


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

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

لینک به ارسال

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

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

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

الان حتی رفتم کامنت های 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 استفاده کنید
لینک به ارسال

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

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

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


wp_reset_query();

لینک به ارسال

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

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

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

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

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

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

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

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

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