شاهین

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

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

ارسال شده در (ویرایش شده)

سلام

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


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

ویرایش شده در توسط shahin
1

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


لینک به پست

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

0

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


لینک به پست

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


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

4

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


لینک به پست

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


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

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

0

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


لینک به پست

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

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

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

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

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

---------

پ.ن:

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

1

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


لینک به پست

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

یافتم.

کد نهایی:


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

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

0

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


لینک به پست

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

$comments->comment_date_gmt
$parent_comment->comment_date_gmt

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

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

1

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


لینک به پست

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


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

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

0

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


لینک به پست

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

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

1

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


لینک به پست

ممنون، بله جواب داد. برای ساعت چه کنم؟

0

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


لینک به پست

بجای :

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

از

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

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

3

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


لینک به پست

ارسال شده در (ویرایش شده)

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

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

ویرایش شده در توسط shahin
0

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


لینک به پست

دوستان،

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

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

0

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


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

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

مثلا:

date_default_timezone_set('Asia/Tehran');

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

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

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

2

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


لینک به پست

ارسال شده در (ویرایش شده)

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


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

ویرایش شده در توسط shahin
0

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


لینک به پست

بله درست نمایش داد؟

0

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


لینک به پست

نه، تغییری نمی کنه!

0

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


لینک به پست

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

0

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


لینک به پست

برای نمایش زمان فعلی جواب میده، اما زمان ارسال دیدگاه ها رو تغییر نمیده.

0

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


لینک به پست

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

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

$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'));

3

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


لینک به پست

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

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

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

1

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


لینک به پست

بله

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

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

1

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


لینک به پست

ارسال شده در (ویرایش شده)

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

یعنی این کد:


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

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


لینک به پست

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

0

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


لینک به پست

ارسال شده در (ویرایش شده)

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


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

ویرایش شده در توسط shahin
1

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


لینک به پست

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

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

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

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


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

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

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


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