رفتن به مطلب

isk

عضو سایت
  • تعداد ارسال‌ها

    2034
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    20

نوشته‌ها ارسال شده توسط isk

  1. شما گفتید که یه قالب دیگری برای کامنت‌ها دارید. من فرض کردم اسم این قالب comments-second-template.php است و در پوشه‌ی پوسته ذخیره شده.

    حالا هرجا در پوسته، مثلاً در single.php و یا loop-single.php که


    <?php comments_template( '', true ); ?>

    قرار دارد به جاش این


    <?php if (in_category('any_category_as_you_wish')) { ?>
    <?php comments_template('/comments-second-template.php'); ?>
    <?php } else { ?>
    <?php comments_template( '', true ); ?>
    <?php } ?>

    را قرار بدید.

    - من نام فایل قالب جدید کامنت را comments-second-template.php فرض کردم که شما باید تغییر بدید.

    - من نام دسته‌ی مورد نظر را any_category_as_you_wish فرض کردم که شما باید تغییر بدید.

    • امتیاز 1
  2. جنسیت جزو متاهای دیفالت کاربری نیست

    برای ثبت جنسیت در فرم ثبت نام به فانکشن اضافه کنید:


    add_action('register_form','myplugin_register_form');
    function myplugin_register_form (){
    $gender = ( isset( $_POST['gender'] ) ) ? $_POST['gender']: '';
    ?>
    <p>جنسیت
    <select for="gender" name="gender">
    <option id="gender" value="Male">Male</option>
    <option id="gender" value="Female">Female</option>
    </select>
    </p>
    <?php
    }
    add_filter('registration_errors', 'myplugin_registration_errors', 10, 3);
    function myplugin_registration_errors ($errors, $sanitized_user_login, $user_email) {
    if ( empty( $_POST['gender'] ) )
    $errors->add( 'gender_error','جمله‌ی خطای ثبت جنسیت که در اینجا با توجه به نوع فرم، کارایی ندارد');
    return $errors;
    }
    add_action('user_register', 'myplugin_user_register');
    function myplugin_user_register ($user_id) {
    if ( isset( $_POST['gender'] ) )
    update_user_meta($user_id, 'gender', $_POST['gender']);
    }

    حالا برای نمایش در پروفایل کاربر و امکان ویرایش به فانکشن اضافه کنید:


    function add_gender_user_profile( $user ) {
    ?>
    <table class="form-table">
    <tr>
    <td>
    <label for="gender">Gender</label>
    <input type="text" name="gender" id="gender" value="<?php echo esc_attr( get_the_author_meta( 'gender', $user->ID ) ); ?>" class="regular-text" readonly/>
    </td>
    <td>
    <input type="radio" name="gender" id="gender" value="Male"/>Male<br/>
    <input type="radio" name="gender" id="gender" value="Female"/>Female<br/>
    <span class="description">می توانید جنسیت را تغییر دهید</span>
    </td>
    </tr>
    </table>
    <?php }
    function save_gender_user_profile( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) )
    return FALSE;
    update_user_meta( $user_id, 'gender', $_POST['gender'] );
    }
    add_action( 'show_user_profile', 'add_gender_user_profile' );
    add_action( 'edit_user_profile', 'add_gender_user_profile' );
    add_action( 'personal_options_update', 'save_gender_user_profile' );
    add_action( 'edit_user_profile_update', 'save_gender_user_profile' );

    ** تغییرات قبلی که برای این منظور دادید رو به حالت اول برگردونید

    • امتیاز 4
  3. فعلاً مسیر رو با پوسته‌ی دیفالت طی کنید - بعد که همه چیز کامل شد به مشکلات این پوسته رسیدگی بشه

    یه نسخه از فایل page.php و single.php پوسته‌ی سالم رو اینجا پیوست کنید.

    • امتیاز 1
  4. به موازات روش فوق می‌تونید از این روش هم استفاده کنید:

    فرض که comments-second-template.php تمپلیت دلخواه شما برای دسته خاص باشه، در اینصورت میشه:


    <?php if (in_category('any_category_as_you_wish')) { ?>
    <?php comments_template('/comments-second-template.php'); ?>
    <?php } else { ?>
    <?php comments_template( '', true ); ?>
    <?php } ?>

    و احتمال داره بسته به نوع قالبتون نیاز بشه از


    include (TEMPLATEPATH . /'comments-second-template.php')

    به جای


    comments_template('/comments-second-template.php')

    استفاده کنید

    • امتیاز 2
  5. اولاً سایت جذب ایده خودش باید در ظاهر و شکل هم دارای ایده باشه که متاسفانه سایت شما اینطور نیست.

    به هر حال:

    برای کش کردن برخی از اکسترنال ها در فانکشن اضاففه کنید:


    function _remove_script_version( $src ){
    $parts = explode( '?', $src );
    return $parts[0];
    }
    add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
    add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );

    - deffer js ها رو حتماً رعایت کنید - که این مورد با کد نویسی میسر نیست و نیاز به دقت داره

    - قالب شما گرچه ریپ هست اما در نوع خودش به شدت فالب خوبیه - اما به دفعات دیدم که توزیع کننده غیرقانونی قالب که در فوتر اسمش آورده شده قالب‌های غیرقانونی رو دستکاری می‌کنه (دلیلش رو نمی‌دونم) - برای مثال تصاویر شما فاقد مقادیر طول و عرض هستند و این هم در لود و هم در نمایش مشکلاتی ایجاد می‌کنند.

    - مدت زمان کش رو افزابش بدید.

    - در فانکشن قرار بدید:


    function enable_gzip() {
    if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start();
    }

    - به مدیر سرور بفرمایید keep-alive رو فعال کنه - گرچه اگر مشخصات دقیق وب‌سرور رو داشته باشید می‌تونید از روش‌های دیگه فعالش کنید.

    مثلاً در htaccess قرار بدید (با احتیاط):


    <IfModule mod_headers.c>
    Header set Connection keep-alive
    </IfModule>

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

  6. قسمت بالای فایل برگه‌ی جدیدی که ساختید باید شبیه زیر باشه:


    <?php
    /* Template Name:my-page-template */
    get_header(); ?>

    بعد در پنل وردپرس برگه‌ی جدیدی تولید کنید (افزودن برگه) اما بجای قالب پیشفرض، قالب my-page-template باید انتخاب بشه.

    در مورد دوم هم باید کدها رو خارج از لوپ قرار بدید - در صورت امکان کد single.php رو اینجا بذارید.

    • امتیاز 2
  7. کل فراخوانی فایل excerpt limitation رو از هرجایی هست حذف کنید

    به جاش تابع ساده تری استفاده کنید:


    /*
    Limit excerpt by word
    use <?php $excerpt = get_the_excerpt(); echo string_limit_words($excerpt,30);?> in template for 30 word
    */
    function string_limit_words($string, $word_limit)
    {
    $words = explode(' ', $string, ($word_limit + 1));
    if(count($words) > $word_limit)
    array_pop($words);
    return implode(' ', $words);
    }

    در کامنت توضیح داده شده چگونه فراخوانی بشه

    در ضمن افزونه‌های سئو در ورودی بی تاثیرند

  8. البته زمینه‌های دلخواه با تگ‌ها متفاوتند.

    به هر حال شما مسئله رو اینجور در نظر بگیرید که: همه‌ی پست ها توسط یک‌نفر اما به نام چندین‌نفر تولید میشن.

    برای هر پست زمینه‌ی دلخواهی به نام مثلاً: auth ایجاد کنید و در هر پست مقدار مورد نظرتون رو بهش بدید. مثلاً: علی - حسن - حسین

    در جای مناسبی از single.php قرار بدید:


    <?php
    $author_post = get_post_custom_values( 'auth' );
    $author_argu = array(
    'numberposts' => 5,
    'post_type' => 'post',
    'post_status' => 'publish',
    'meta_value' => $author_post
    );
    $posts = get_posts($author_argu); ?>
    <ul>
    <?php foreach($posts as $post) { ?>
    <li><a href="<?php echo get_permalink(); ?>"><?php echo $post->post_title; ?></a></li>
    <?php } ?>
    <a href="other-from-this-author.php">سایر نوشته‌های ایشان</a>
    </ul>

    این برای نمایش چند نوشته از همین نویسنده

    سپس برگه ایی با قالب دلخواه و نام مثلاً : other-from-this-author.php تولید کنید (در بخش آموزش بسیار تکرار شده) و درون اون همین کوئری رو با تغییراتی ایجاد کنید تا همه‌ی نوشته های همین شخص رونمایش بده - تغییرات به این دلیل هست که در این برگه دیگه خبری از پست نیست بنابراین باید meta value ها رو بصورت گلوبال فراخوانی کنید.

    هر وقت انجام شد بفرمایید تا نحوه‌ی انتقال متغیر از پست به این برگه رو هم قرار بدم - تا این برگه بتونه بفهمه که نوشته‌های کدوم نویسنده رو باید نمایش بده

  9. واقعیت اینه که ناراحت میشم این جور مواقع؛ نه از شما بلکه از سیستم آموزشی که متاسفانه محصولاتش رو با ذهن انتزاعی پرورش نمیده.

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

    در پست 12 ، دو مسیر کاملاً متفاوت ارائه شد. اول انتخاب کنید کدوم مسیر رو میخواین طی کنین - بعد میرسیم به طی مسیر و حل مسئله.

    • امتیاز 1
  10. اگر واقعاً چنین نویسنده ایی وجود نداره کار مناسبی نیست، اما به هر حال می‌تونید در بخش کاربران تولیدش کنید و در زمان نوشتن پست در باکس نویسنده نام اون نویسنده رو انتخاب کنید و بقیه ماجرا که در پست 10 آمده

    اما بهتر اینه که زمینه دلخواهی به اسم مثلاً author_post تولید کنید و برای هر پست مقدار مورد نظر رو بهش بدید: مثلاً امید، اوباما، برادر مظفر و ادامش همونی میشه که در پست 8 آمده یعنی کوئری برمبنای زمینه‌های دلخواه

  11. من این افزونه رو تاحالا استفاده نکردم - اما الان که مستنداتش رو خوندم چیزی در این مواردی که شما نیاز دارید ندیدم

    اما به هر حال می‌تونید با کوئری‌های مناسبی از دیتابیس وردپرس تعداد کل پست‌های منتشره و با interval و یا دستورات مشابه تعداد پست‌های روزجاری رو محاسبه کنید. همچنین برای تعداد کاربران.

    اگر نتونستید اعلام کنید تا قرار بگیره

    • امتیاز 1
  12. شما سایت خودتون رو با یک نویسنده با سایت دیگری که چندین نویسنده داره مقایسه می‌کنید و این اشتباهه. شما مسئله‌ی خودتون رو مطرح کنید بهتره و به سایت دیگران کاری نداشته باشید.

    مسئله‌ی شما دو حالت بیشتر نداره:

    1 - تنها نویسنده‌ی سایت شمایید و مطالبی رو با ذکر لقب "نویسنده" به سایرین مثلاً: امید، اوباما، ژان ژاک روسو نسبت می‌دید.

    2 - سایت شما چندین کاربر با نقش نویسنده داره که هریک عملاً و مستقلاً با نام خودشون در سایت شما اقدام به نویسندگی می‌کنند.

    اگر 1: راه حل همونی هست که در پست 8 گفتم

    اگر 2: راه حل همونی هست که در پست 10 گفتم

    • امتیاز 1
  13. مثلاً در انتهای فایل single.php قرار بدید:


    <?php
    $authors_posts = get_posts( array( 'author' => $authordata->ID, 'post__not_in' => array( $post->ID ), 'posts_per_page' => 20 ) );
    ?>
    <ul>
    <?php foreach ( $authors_posts as $authors_post ) { ?>
    <li><a href="<?php echo get_permalink( $authors_post->ID ); ?>">
    <?php echo apply_filters( 'the_title', $authors_post->post_title, $authors_post->ID ); ?>
    </a></li>
    <?php } ?>
    همه آثار: <?php the_author_posts_link(); ?>
    </ul>

    می‌تونید the_post_thumbnail و the_excerpt و یا هر دیتای دیگری هم که مایل بودید اضافه کنید

  14. مثال:

    برای خطای برقراری ارتباط با سرور (DataBase Connection Error) فایلی به نام db-error.php با هر محتوا و استایل دلخواه بسازید و در پوشه‌ی wp-content ذخیره کنید. مثلاً:


    <html>
    <head>
    <title>طای دسترسی به دیتابیس</title>
    </head>
    <body>
    لطفا بعداً مراجعه کنید
    </body>
    </html>

    البته گرافیک و ظاهر صفحات خطاهای شخصی چه در wp_die‌ و چه سایر خطاهای سایت زیاد مهم نیستند. مسئله ایی که وجود داره اینه که در فلان لحظه فلان خطا برای ویزیتور شما رخ میده ولی شما بی خبرید. خب این چه دردی از ویزیتور علاج می‌کنه؟ مهم اینه که این نوع صفحات خطای شخصی رو طوری طراحی کنید که همزمان با مشاهده توسط ویزیتور، شما هم مطلع بشید.

    برای سایر خاطاهای wp_die به روش مشابه می‌تونید شخصی سازی کنید.

    • امتیاز 1
×
×
  • اضافه کردن...