PDA

View Full Version : وردپرس: چگونه نظرات با استایل دلخواه ایجاد کنیم که نظرات پاسخ دارای عمق باشند؟



_mojitaba_
دوشنبه 05 خرداد 1393, 19:43 عصر
شرمنده ام که این سوال رو اینجا مطرح میکنم اما گفتم شاید اینجا سریعتر به جواب برسم

دوستان یک فایل comments.php هست به اینصورت


<?php if(have_comments()){?>
<ul>
<?php for ($i=1; $i < get_comments_number() + 1 ; $i++) { ?>
<li>
<div id="comment-header">
<span id="comment-picture"><?php echo get_avatar( get_the_author_meta( 'ID' ), 32); ?></span>
<span id="comment-author"><a href="<?php comment_author_url_link(); ?>"> <?php comment_author($i); ?></a></span>
</div>
<div id="comment-text"><?php echo comment_text($i); ?></div>
<div id="comment-date"><?php comment_date( 'F j, Y g:i a' , $i); ?></div>


</li>
<?php } } ?>
</ul>
</div>




الان این کامنت ها رو نشون میده اما کامنت های جواب رو بصورت کامنت عادی نشون میده!

چجوری میشه کامنت هایی که به عنوان پاسخ ارسال شده اند رو عمق دار نشون داد؟

تگ خاصی تو وردپرس دارن؟ من هرچقد گشتم پیدا نکردم

abolfazl-z
دوشنبه 05 خرداد 1393, 22:13 عصر
دو راهنمایی کلی :

یک . اگر به برنامه نویسی مسلط نیستید از افزونه های اماده استفاده کنید (دقبقا نامشون رو یادم نیست سرچ کنید)

دو . اگر به برنامه نویسی مسلط هستید :

در وردپرس ، جدول comments یک فیلدی به نام comment_parent داره که آی دی کامنتی است که در پاسخ به آن داده شده و اگر صفر باشه یعنی یکی بیشتر نیست و باید بصورت ساده نشون بده ولی اگر صفر نبود یعنی ان کامنت در جواب آن comment_parent گذاشته شده و باید با برنامه نویسی عمق آن را بدست بیارید.

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

_mojitaba_
دوشنبه 05 خرداد 1393, 23:01 عصر
دوست عزیز دست شما درد نکنه :قلب:
یه سوال دیگه از هسته وردپرس میشه به دیتابیس وصل شد؟
یعنی کلاسی چیزی برای وصل شدن و خوندن داره؟
یه مثالم برا خوندن بزارید دیگه کار من راه میفته :قلب:

abolfazl-z
سه شنبه 06 خرداد 1393, 13:05 عصر
دوست عزیز دست شما درد نکنه :قلب:
یه سوال دیگه از هسته وردپرس میشه به دیتابیس وصل شد؟
یعنی کلاسی چیزی برای وصل شدن و خوندن داره؟
یه مثالم برا خوندن بزارید دیگه کار من راه میفته :قلب:

با کلاس wpdb میتونین این کار رو انجام دهید.


$myWpDb = new wpdb(username,password,database,host);
$myWpDb->prefix = "harchi_"; // shayad ham hichii :D

print_r($myWpDb->get_results('SELECT * FROM `wp_posts`',ARRAY_N)); # output is array


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

_mojitaba_
سه شنبه 06 خرداد 1393, 15:32 عصر
مرسی
الان prefix برای چیه؟

MRmoon
سه شنبه 06 خرداد 1393, 16:35 عصر
مرسی
الان prefix برای چیه؟

برای پیشوند نام جدول ها.

مثلا اگه tbl_ گذاشتی اون رو برای نام جداول در نظر میگیره و خودکار اضافه می کنه هنگام ارسال کویری.

_mojitaba_
سه شنبه 06 خرداد 1393, 20:51 عصر
دوستان یک سوال دیگه



<?php for ($i=1; $i < get_comments_number() + 1 ; $i++) { ?>
<?php
$parent=$myWpDb->get_results('SELECT `comment_parent` FROM `wp_comments` where comment_ID='.$i, ARRAY_N );
if($parent[0][0] > 0){
?>
<li style="margin-right:20px;">
<div id="comment-header">
<span id="comment-picture"><?php echo get_avatar( get_the_author_meta( 'ID' ), 32); ?></span>
<span id="comment-author"><a href="<?php comment_author_url_link(); ?>"> <?php comment_author($i); ?></a></span>
</div>
<div id="comment-text"><?php echo comment_text($i); ?></div>
<div id="comment-date"><?php comment_date( 'F j, Y g:i a' , $i); ?></div>


</li>
<?php } else{?>
<li>
<div id="comment-header">
<span id="comment-picture"><?php echo get_avatar( get_the_author_meta( 'ID' ), 32); ?></span>
<span id="comment-author"><a href="<?php comment_author_url_link(); ?>"> <?php comment_author($i); ?></a></span>
</div>
<div id="comment-text"><?php echo comment_text($i); ?></div>
<div id="comment-date"><?php comment_date( 'F j, Y g:i a' , $i); ?></div>


</li>


تا اینجا درست خب
اما اگه یک کامنتی آیدی 15 داشت و پرنتش 1 بود اون موقع اون کامنت همون جای خودش 20 پیکسل میاد جلو که این جالب بنظر نمیاد
یه راهی هست که موقعی مثلا i=1 بود بیاد کامنتهایی رو که پرنتشون 1 هست رو بدست بیاره اما بعدش که کامنت 1 تموم شد مثلا کامنت 5 پاسخ 1 باشه دوباره کامنت 5 موقعی که i=5 بشه چاپ میشه :افسرده:
شما چه راه حلی رو ارائه میدید؟