رفتن به مطلب

تبدیل قالب نظرات به وردپرس


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

با سلام

از انجمن خوبتون ممنونیم

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

ولی واقعا در تبدیل قالب نظرات گیج شدم

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

از دوستان خواهش میکنم قالب اچ تی ام ال نظرات منو به وردپرس تبدیل کنه

کد هارم توضیحات اضافه کرده بودم بهش تا در تبدیل به وردپرس دچار سرگیجه نشم و کارم آسون بشه که دیدم نظرات سخته و پیچیدس

دقیقا این کد هارو


<!--نمایش نظرات ارسالی به همراه نظرات نقل قولی و ... !-->
<div class="nazarat">
***
<!-- شروع حلقه نظرات!-->
<div class="list-comment">
<div class="avcom">
<!-- تابع نمایش آواتار کاربر با سایز 85 <img> !-->
<span class="arrow"></span>
</div>
<div class="comment-send">
<a href="<!--لینک پروفایل ارسال کننده نظر!-->" rel="nofollow" title="<!-- نام ارسال کننده نظر!-->" style="display: block;margin-top:15px;"><!-- نام ارسال کننده نظر!--></a>
<span style="display: block;"><!-- تاریخ ارسال نظر!--></span>
<!-- نقل قول!-->
<a href="">نقل قول</a>
<!-- /نقل قول!-->
</div>
<div class="nogte2"></div>
<div class="matncom"><!-- متن کامنت کاربر در اینجا قرار میگیرد!--></div>
</div>
<!-- /پایان حلقه نظرات!-->
***

</div>
<!--نمایش نظرات ارسالی به همراه نظرات نقل قولی و .../ !-->

<!-- فرم ارسال نظر!-->
<div class="nazarat" style="height: 150px;">
<div class="moshkh">
<label for="name">نام : </label>
<input id="name" name="author" class="comment-textfield" value="" aria-required="true">
<br>
<label for="email">ایمیل : </label>
<input id="email" name="email" class="comment-textfield" value="" aria-required="true" style="text-align:left;">
<br>
<label for="website">سایت : </label>
<input id="website" name="url" class="comment-textfield" value="" style="text-align:left;direction:ltr;">
</div>
<div class="sendcm">
<textarea id="comment" name="comment" aria-required="true" class="comment-textfield" placeholder="دیدگاه : "></textarea>
</div>
<div>
<button type="submit" class="btsend">
ارسال پیام
</button>
</div>
</div>
<!-- پایان فرم ارسال نظر!-->

لینک به ارسال

بخش نظراتتون اینجوری در هر حال ناقصه

این فایل را دانلود کنید و فایل index.html را بازکنید

comments-generator-data.zip

فایل به صورت واضح دسترسیتون رو برای بخش هایی که می تونید شخصی سازی کنید باز می کنه بعد از شخصی سازی کلاس ها و تگ ها روی کلید ساخت کد در زیر صفحه بزنید و کدهایی که براتون ایجاد می شه را در یک سند به نام comments.php ذخیره کنید و اعلام کنید تا در مورد باقی کدها که باید در functions.php قرار بگیرند راهنماییتون کنم

لینک به ارسال

با سلام دوباره خدمات شما آقای فخار عزیز

کد هارو تبدیل کردم و قسمت ارسال نظر با موفقیت تموم شد اما قسمت نمایش نظرات اصلا تابعی نداشت !

کد های html نمایش نظراتم اینجوری بود


<div class="list-comment">
<div class="avcom">
<!-- تابع نمایش آواتار کاربر با سایز 85 <img> !-->
<span class="arrow"></span>
</div>
<div class="comment-send">
<a href="<!--لینک پروفایل ارسال کننده نظر!-->" rel="nofollow" title="<!-- نام ارسال کننده نظر!-->" style="display: block;margin-top:15px;"><!-- نام ارسال کننده نظر!--></a>
<span style="display: block;"><!-- تاریخ ارسال نظر!--></span>
<!-- نقل قول!-->
<a href="">نقل قول</a>
<!-- /نقل قول!-->
</div>
<div class="nogte2"></div>
<div class="matncom"><!-- متن کامنت کاربر در اینجا قرار میگیرد!--></div>
</div>

که طبق گفته اون generator پاکش کردم به جاش کد زیر رو گذاشتم


<ol class="commentlist">
<?php wp_list_comments("callback=callback_function");?>
</ol>

حالا کد های نمایش نظرات باید از کجا شخصی سازی بشه ؟ فعلا که تست نکردم نظری رو نمایش میده یا نه

در کل

تمامی کد ها شد این


<!--نمایش نظرات ارسالی به همراه نظرات نقل قولی و ... !-->
<div class="nazarat">
<?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() ) { ?>
<p class="nocomments"><?php _e('This post is password protected. Enter the password to view comments.'); ?></p>
<?php
return;
}
?>
<?php if ( have_comments() ) : ?>
<ol class="commentlist">
<?php wp_list_comments("callback=callback_function");?>
</ol>
<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>
<?php else : // this is displayed if there are no comments so far ?>
<?php if ( comments_open() ) : ?>
<!-- If comments are open, but there are no comments. -->
<?php else : // comments are closed ?>
<!-- If comments are closed. -->
<p class="nocomments"><?php _e('Comments are closed.'); ?></p>
<?php endif; ?>
<?php endif; ?>

</div>
<!--نمایش نظرات ارسالی به همراه نظرات نقل قولی و .../ !-->
<!-- فرم ارسال نظر!-->
<?php if ( comments_open() ) : ?>
<div class="nazarat" id="respond" style="height: 150px;">
<div id="cancel-comment-reply">
<small><?php cancel_comment_reply_link() ?></small>
</div>
<?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?>
<?php else : ?>
<div class="moshkh">
<form action="<?php echo site_url(); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if ( is_user_logged_in() ) : ?>
<label for="author">نام : </label>
<input disabled="disabled" style="background: #D9CEE2;" type="text" name="author" class="comment-field" id="author" value="<?php printf(__('%2$s'), get_edit_user_link(), $user_identity); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true' required"; ?> />
<br>
<label for="email">ایمیل : </label>
<input disabled="disabled" style="text-align: left;background: #D9CEE2;" type="email" class="comment-field" name="email" id="email" value="<?php global $current_user;
get_currentuserinfo();
echo '' . $current_user->user_email . "\n";
?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true' required"; ?> />
<br>
<label for="url">سایت : </label>
<input disabled="disabled" type="url" class="comment-field" style="text-align: left;background: #D9CEE2;" name="url" id="url" value="<?php global $current_user;
get_currentuserinfo();
echo '' . $current_user->user_url . "\n";
?>" size="22" tabindex="3" />
</div>
<div class="sendcm">
<textarea id="comment" name="comment" aria-required="true" class="comment-textfield" placeholder="دیدگاه : "></textarea>
</div>
<div>
<input name="submit" type="submit" id="submit" tabindex="5" class="btsend" value="ارسال پیام" />
<?php comment_id_fields(); ?>
<?php do_action('comment_form', $post->ID); ?>
<?php else : ?>
<label for="author">نام : </label>
<input type="text" name="author" class="comment-field" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true' required"; ?> />
<br>
<label for="email">ایمیل : </label>
<input type="email" style="text-align: left;" class="comment-field" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true' required"; ?> />
<br>
<label for="url">سایت : </label>
<input type="url" style="text-align: left;" class="comment-field" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" />
</div>
<div class="sendcm">
<textarea id="comment" name="comment" aria-required="true" class="comment-textfield" placeholder="دیدگاه : "></textarea>
</div>
<div>
<input name="submit" type="submit" id="submit" tabindex="5" class="btsend" value="ارسال پیام" />
<?php comment_id_fields(); ?>
<?php do_action('comment_form', $post->ID); ?>
</form>
<?php endif; // If registration required and not logged in ?>
</div>
<?php endif; // if you delete this the sky will fall on your head ?>
<?php endif; // if you delete this the sky will fall on your head ?>
</div>
<!-- پایان فرم ارسال نظر!-->

ببخشید زیاد حرف زدم

لطفا جهت ادامه کار راهنماییم کنید .

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


function callback_function($comment, $args, $depth)
{
$GLOBALS['comment'] = $comment; ?>
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
<div class="list-comment">
<div class="avcom">
<?php echo get_avatar($comment,$size='86',$default='<path_to_url>' ); ?> <!-- تابع نمایش آواتار کاربر با سایز 85 <img> !-->
<span class="arrow"></span>
</div>
<div class="comment-send">
<!--<a href="لینک پروفایل ارسال کننده نظر!" rel="nofollow" title="نام ارسال کننده نظر" style="display: block;margin-top:15px;">نام ارسال کننده نظر</a>-->
<?php
$comment_user_id = $comment->user_id;
$gupc = get_user_posts_count($comment_user_id);
if($comment_user_id>0 and $gupc>0) {
echo '<a href="'.home_url('/?author='.$comment_user_id).'">';
comment_author();
echo '</a>';
}
else {
comment_author_link();
} ?>
<span style="display: block;"><?php printf(__('%1$s at %2$s', 'fakhar'), get_comment_date(), get_comment_time()) ?><!-- تاریخ ارسال نظر!--></span>
<!-- نقل قول!-->
<?php comment_reply_link(array_merge( $args, array( 'before' => '<div class="btn btn-default">','after' => '</div>','depth' => $depth, 'max_depth' => $args['max_depth']))) ?><!-- /نقل قول!-->
</div>
<div class="nogte2"></div>
<div class="matncom"><!-- متن کامنت کاربر در اینجا قرار میگیرد!--><?php comment_text() ?></div>
</div>
<?php
}

1. نظرات به صورت خودکار در تگ ol لود می شند و لازمه که در یک li قرار بگیرند این li به صورت خودکار بسته می شه و نیازی به تگ انتهایی نداره با استایل دهی مناسب می تونید خواص li را ازش بگیرید ولی تگ را تغییر ندهید

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


<?php edit_comment_link(__('edit', 'fakhar'),' ','') ?>

3. هر جا در کدها fakhar هست می تونید با تکست دامین قالب عوضش کنید تا با poedit بتونید بخش مربوطه اش رو ترجمه کنید ولی اگر می خواهید در قالب فارسی نویسی کنید فقط مقدار داخل کوتیشن قبل از fakhar را فارسی کنید

مثلا


__('edit', 'fakhar');
__('ویرایش', 'fakhar');

کدها را در داخل تگ php فایل functions.php قالبتون کپی کنید

لینک به ارسال

ممنون آقای فخار که پیگیر هستید.

کد هایی که فرموده بودینو بدون هیچ تغییری و با اضافه کردن تگ <?php و <? در فایل فانکشن اضافه کردم

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

کد هایی که توسط generator ساخته بودم و در فایل کامنت برای نمایش نظرات گذاشتم این ها هستند


<!--نمایش نظرات ارسالی به همراه نظرات نقل قولی و ... !-->
<div class="nazarat">
<?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() ) { ?>
<p class="nocomments"><?php _e('This post is password protected. Enter the password to view comments.'); ?></p>
<?php
return;
}
?>
<?php if ( have_comments() ) : ?>
<ol class="commentlist">
<?php wp_list_comments("callback=CALLBACK_FUNCTION");?>
</ol>
<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>
<?php else : // this is displayed if there are no comments so far ?>
<?php if ( comments_open() ) : ?>
<!-- اگر کامنت ها باز بودند. -->
<ol class="commentlist">
<?php wp_list_comments("callback=CALLBACK_FUNCTION");?>
</ol>
<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>
<?php else : // comments are closed ?>
<!-- اگر کامنت ها بسته بودند. -->
<p class="nocomments"><?php _e('Comments are closed.'); ?></p>
<?php endif; ?>
<?php endif; ?>

</div>
<!--نمایش نظرات ارسالی به همراه نظرات نقل قولی و .../ !-->

که خروجیش در سورس میشه این


<!--نمایش نظرات ارسالی به همراه نظرات نقل قولی و ... !-->
<div class="nazarat">
<!-- اگر کامنت ها باز بودند. -->
<ol class="commentlist">
</ol>
<div class="navigation">
<div class="alignleft"></div>
<div class="alignright"></div>
</div>

</div>
<!--نمایش نظرات ارسالی به همراه نظرات نقل قولی و .../ !-->

پیش میشه نتیجه گرفت که نظری بین تگ ol لود نمیشه.

کد هایی که داده بودین در فانکشن قرار بدم رو شرط سطر اولش رو پاک کردم و بین تگ ol قرار دادم ولی باز نتیجه نگرفتم و کد ها رو برگردونم سر جاش

ممنون میشم وقتتونو چند دقیقه برای این کد ها بزارید و دوباره چکشون کنید.

تشکر

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

CALLBACK_FUNCTION را در این کدها با حروف بزرگ نوشتید در کدهای قبلی با حروف کوچک حالا در هر دو فایل بجاش یک کلمه دیگه بنویسید مثلا maryam_comments و در هر دو فایل هم با حروف کوچک

فایل کامنت باید اسمش comments.php و فانکشنز هم functions.php باشه اس جمع فراموش نشه

به بقیه ساختار کدهایی که دادم دست نزنید

از


<ol class="commentlist">
<?php wp_list_comments("callback=CALLBACK_FUNCTION");?>
</ol>

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

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

لینک به ارسال

واقعا ایول دارید استاد !

مشکل از نام فایل comments.php بود که من اسمشو یه چیز دیگه گذاشته بودم و از طریق include فراخوانیش میکردم که با تغییر نام و استفاده تابع فراخوانی فایل کامنت نظرات لود شدند ولی ارور داد که در لاین 25 فانکشن ناشناخته ای وجود دارد.

خط 25 بود کدش این بود


$gupc = get_user_posts_count($comment_user_id);

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


$gupc = get_posts($comment_user_id);

بعدش کامنت ها به خوبی لود میشن فقط ایرادی که مونده آواتارشون نمیاد و ارورد 404 میدن و سپس به صفحه فیلترینک هدایت میشن

خروجی لینک عکس به این صورت در میاد


http://1.gravatar.com/avatar/fea98c9bf91d4b66d91aeae20199d99e?s=86&d=%3Cpath_to_url%3E&r=G

به نظرم تگ <path_to_url> اجرا نمیشه.

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

حل شد. سپاس استاد فخار عزیز.

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

این تابع


$gupc = get_user_posts_count($comment_user_id);

یک تابع شخصیه و متوجه اش نبودم می تونید از خود تابعش استفاده کنید که پاسخ را صحیح برگردونه برای اینکار کد را به حالت قبل برگردونید و این تابع را به functions.php اضافه کنید


function get_user_posts_count($user_ID){
$args = array('author' => $user_ID, 'posts_per_page' => -1);
$the_query = new WP_Query( $args );
if ($the_query->post_count > 0){
return $the_query->post_count;
}
else{
return 0;
}
}

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

لینک به ارسال

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

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

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

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

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

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

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

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

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