رفتن به مطلب

نمایش "در پاسخ به ..." در برگ ساخته شده برای آخرین دیدگاه ها


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

سلام

برگی برای نمایش آخرین دیدگاه های کاربران ایجاد کرده ام؛ اما می خواهم در بالای هر دیدگاه قید شود که این دیدگاه در پاسخ به چه کسی است؛ همانطور که در بخش دیدگاه های وردپرس قید شده است:


/wp-admin/includes/class-wp-comments-list-table.php

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

خوب شما چه کدی ساتفاده کردید؟ باید متد استفاده کد شما رو بدونیم تا کد پیشنهاد بدیم.

لینک به ارسال

می توانید از این کد استفاده کنید:


<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type,comment_author_url,
SUBSTRING(comment_content,1,30) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n<ul>";
foreach ($comments as $comment) {
$output .= "\n<li>".strip_tags($comment->comment_author)
.":" . "<a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"on " .
$comment->post_title . "\">" . strip_tags($comment->com_excerpt)
."</a></li>";
}
$output .= "\n</ul>";
$output .= $post_HTML;
echo $output;?>

لینک به ارسال

کدی که برای نمایش آخرین دیدگاه ها در سایت استفاده می کنم:


<ol class="commentlist">
<?php
$comments = get_comments('status=approve&number=50');
foreach($comments as $comment) :?>
<li class="comment"><?php $my_id = $comment->comment_post_ID ; $post_id_comms = get_post($my_id); $title = $post_id_comms->post_title;?>
<?php if(function_exists("get_avatar")) echo get_avatar( $comment, 32 ); ?>
<?php
$author = get_comment_author();
if ($comment->user_id != 0) {
$nicename = get_the_author_meta("user_nicename", $comment->user_id );
$blogurl = get_bloginfo("url");
echo "<a href='$blogurl/profile/$nicename/'>$author</a>";
} else {
comment_author_link();
}
?>
در <a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>" title="<?php echo($comment->comment_time);?>"><?php echo $title ?></a> گفته:<br />
<?php echo($comment->comment_content);?></li>
<?php endforeach;?></ol>

دیگه دارم از سوال پرسیدن اینجا ناامید میشم!

لینک به ارسال

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

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

برای اینکار باید به دیتابیس سلکت بزنید.

برای مثال کدی که دوستمون امید بالاتر قرار داده اسم نویسنده و در پاسخ به اسم نوشته رو میاره. شما میتوین در این سلکت بجای اسم نوشته به comment_parent سلکت کنی. comment_parent همون آی دی نظر مادر میشه.

بعد طبق آی دی نظر مادر ، اسم نویسنده نظر رو نمایش بدی.

---------

پ.ن:

صبر همیشه بهترین گزینه هست....

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

ممنون کد رو وارد کردم و تغییر دادم؛ الان آی دی نظر مادر رو نشون میده. چطور طبق آی دی نظر مادر، اسم نویسنده اون نظر رو نمایش بدم؟

یافتم.

کد نهایی:


<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, user_ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type, comment_parent, comment_author_url,
SUBSTRING(comment_content,1,70) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 100";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n<ol class='commentlist'>";
foreach ($comments as $comment) {
$parent_comment = get_comment($comment->comment_parent);
$output .= "\n<li class='comment'>".strip_tags($comment->comment_author)
.' در پاسخ به '.$parent_comment->comment_author
." در ".$comment->post_title." گفته:<br /> " . "<a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"در " .
$comment->post_title . "\">" . strip_tags($comment->com_excerpt)
."</a></li>";
}
$output .= "\n</ol>";
$output .= $post_HTML;
echo $output;
?>

برای نمایش تاریخ شمسی و ساعت ارسال چیکار کنم؟

لینک به ارسال

تاریخ طبق کد شما این باید باشه:

$comments->comment_date_gmt
$parent_comment->comment_date_gmt

برای نمایش شمسی هم این رو تست کنید:

jdate($comments->comment_date_gmt)
jdate($parent_comment->comment_date_gmt)

لینک به ارسال

تست کردم، اما خروجی نداره.


$output .=" در <strong>" . jdate($comments->comment_date_gmt) . "</strong>";

ساعت تنها هم باشه کفایت می کنه.

لینک به ارسال

کدی که دادم جواب میده این کد رو تست کنید:

<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, user_ID, post_title, post_password, comment_ID,
comment_post_ID, comment_author, comment_date_gmt, comment_approved,
comment_type, comment_parent, comment_author_url,
SUBSTRING(comment_content,1,70) AS com_excerpt
FROM $wpdb->comments
LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
$wpdb->posts.ID)
WHERE comment_approved = '1' AND comment_type = '' AND
post_password = ''
ORDER BY comment_date_gmt DESC
LIMIT 100";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n<ol class='commentlist'>";
foreach ($comments as $comment) {

$originalDate = $comment->comment_date_gmt; ///دریافت تاریخ
$newDate = jdate("d-m-Y", strtotime($originalDate)); /// تبدیل تاریخ


$parent_comment = get_comment($comment->comment_parent);
$output .= "\n<li class='comment'>".strip_tags($comment->comment_author)
.' در پاسخ به '.$parent_comment->comment_author
." در ".$comment->post_title." گفته:<br /> " . "<a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"در " .
$comment->post_title . "\">" . strip_tags($comment->com_excerpt)
."</a>".$newDate."</li>";
}
$output .= "\n</ol>";
$output .= $post_HTML;
echo $output;
?>

لینک به ارسال

بجای :

$newDate = jdate("d-m-Y", strtotime($originalDate));

از

$newDate = jdate("d-m-Y H:i:s", strtotime($originalDate));

استفاده کنید.

لینک به ارسال

ممنون، اما ساعت درستی رو نشون نمیده.

دارم رو کدش کار می کنم که کاربر دیدگاه هایی که در پاسخ به خودش هست رو به رنگ دیگری ببینه. اگه مشکلی برخورد کردم ازتون کمک می گیرم.

ویرایش شده توسط shahin
لینک به ارسال
  • 2 هفته بعد...

دوستان،

1. برای نمایش ساعت محلی چیکار کنم؟

2. آیا راهی هست که نمایش دیدگاه ها رو در اینجا صفحه بندی کنم؟

لینک به ارسال
1. برای نمایش ساعت محلی چیکار کنم؟

میتونید از date_default_timezone_set استفاده کنید:

مثلا:

date_default_timezone_set('Asia/Tehran');

echo date("Y-m-d h:iA");

2. آیا راهی هست که نمایش دیدگاه ها رو در اینجا صفحه بندی کنم؟

چون کد شما دستی هست میتونید از صفحه بندی معمولی در php استفاده کنید. مثلا این آموزش

لینک به ارسال

یعنی اینطوری؟


date_default_timezone_set('Asia/Tehran');
$originalDate = $comment->comment_date_gmt;
$newDate = jdate("d-m-Y H:i:s", strtotime($originalDate));
$output .=" در تاریخ " .$newDate ;

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

برای تنظیم ساعت.

افزودن به زمان :

$newDate = date("d-m-Y H:i:s", strtotime($originalDate.'1 hour 2 min 3 sec'));

کم کردن از ساعت :

$newDate = date("d-m-Y H:i:s", strtotime($originalDate.'-1 hour -2 min -3 sec'));

لینک به ارسال

آقا دمت گرم، اوکی شد.

اون لینک آموزش صفحه بندی که گذاشتید برای همین کاره؟

(میخوام محدودیت نمایش آخرین دیدگاه ها رو 1000 تا کنم، بعد 100 تا 100 تا صفحه بندی شه.)

لینک به ارسال

بله

چون کد شما از توابع اصل یوردپرس استفاده نشده برای همین از اون آموزش بای صفحه بندی استفاده کنید.

طبق آموزش پیش برید میتونید تعداد نظرات (یا نوشته ها) رو به دلخواه تعیین کنید.

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

متوجه شدم هنگامی که دیدگاه های مطالب صفحه بندی می شود، لینک دیدگاه های صفحات قبل نادرست است.

یعنی این کد:


<a href=\"" . get_permalink($comment->ID) .
"#comment-" . $comment->comment_ID . "\" title=\"مشاهده این دیدگاه\">".$comment->post_title."</a>

جای اینکه به اینجا لینک دهد:


/delneveshteha/comment-page-34#comment-51483

به اینجا لینک می دهد:


/delneveshteha#comment-51483

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

این در حالیست که وقتی از این کد استفاده می کنم، لینک ها درست است؛ اما خب گفتید با آن توابع نمی توان به نویسنده قبلی دسترسی پیدا کرد.

لینک به ارسال

ای ول، برای نمایش آدرس دیدگاه از این کد استفاده کردم و درست شد:


<a href=\"" . htmlspecialchars( get_comment_link( $comment->comment_ID ) ) . "\" title=\"مشاهده این دیدگاه\">".$comment->post_title."</a>

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

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

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

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

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

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

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

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

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

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