افزایش سرعت وردپرس

 

10+wp config 10+ کد wp config برای افزایش سرعت وردپرس

اگر شما از قبل وردپرس را نصب کرده اید، پس حتما فایل wp-config.php را می شناسید: این همان فایل که در آن اطلاعات ارتباطات پایگاه داده های خود را تنظیم و زبان سایت خود را تعریف می کنید. اما می توانید کارهای زیادتری با فایل wp-config.php خود انجام دهید. در این مقاله، من به شما ۱۰ + ترفند نشان خواهم داد که با استفاده از فایل wp-config.php، وب سایت وردپرس خود را ارتقا خواهید داد.

پیش گیری کردن از خواستن اعتبار FTP توسط وردپرس

خط زیر را در فایل wp-config.php خود را جایگذاری کنید. این فایل در ریشه ی نصب وردپرس شما واقع شده است.

1
define('FS_METHOD', 'direct');

لطفا توجه داشته باشید که کد ارائه شده در بالا ممکن است در همه ی میزبانان ارائه دهنده ی خدمات کار کنند، و حتی اگر میزبان شما بد پیکربندی شده باشد، ممکن است مسائل امنیتی ایجاد کند، بنابراین اگر در مورد میزبان خود مطمئن نیستید، از استفاده از آن اجتناب کنید.

منبع : http://wp.tutsplus.com/tutorials/security/conquering-the-wp-config-php-file-11-good-practices/

به وردپرس بگویید که اعتبار FTP شما را به خاطر داشته باشد

اگر روش فوق بر روی سرور شما کار نمی کند، و یا اگر نمی خواهید به دلایلی آن را پیاده کنید، در اینجا یک قطعه ی مفید دیگر برای شما داریم. این یکی به سادگی به وردپرس می گوید که اعتبار FTP شما را به خاطر داشته باشد، بنابراین هنگامی که سایت خود را آپ گرید می کنید دوباره از شما FTP نخواهد خواست.

1
2
3
4
define('FTP_HOST', 'ftp.yoursite.com');
define('FTP_USER', 'Your_FTP_Username');
define('FTP_PASS', 'Your_FTP_password');
define('FTP_SSL', true); // If you can use a SSL connection set this to true

منبع : http://admindaily.com/how-to-stop-wordpress-ftp-to-upgrade-plugins.html

اجازه ندادن به ویرایش مستقیم فایل

به طور پیش فرض، وردپرس به مدیریت سایت اجازه می دهد تم ها و فایل های افزونه را از طریق یک ویرایشگر سازه، به طور مستقیم ویرایش کند. این کار بسیار مفید است، اما اگر در حال ایجاد یک سایت برای مشتریتان هستید، مطمئنا نمی خواهید که سایتش را ویران کند. در اینجا یک راه ساده برای اجازه ندادن به ویرایش مستقیم ارائه می دهیم.

1
define('DISALLOW_FILE_EDIT', TRUE);

منبع : http://www.wprecipes.com/how-to-hide-theme-editor-from-wordpress-dashboard

خالی کردن سطل زباله به طور خودکار

اگر می خواهید تعریف کنید که هر چند وقت یکبار سطل زباله باید به صورت خودکار خالی شود، راه درست برای انجام آن در اینجا آمده است:

1
define('EMPTY_TRASH_DAYS', 1);

برای خالی کردن خودکار اسپم نظرات در هر دوره ی X روزه، به جای۱، X بگذارید. به همین سادگی!

منبع : http://www.wprecipes.com/how-to-automatically-empty-trash-on-a-daily-basis

به راحتی محل نصب وردپرس خود را تغییر دهید

وردپرس از یک روش جابجایی خودکار، پشتیبانی می کند که به عنوان یک کمک سریع برای در حال کار نگه داشتن یک وب سایت، وقتی که آن را از روی یک سرور به سرور دیگر منتقل می کنیم، در نظر گرفته می شود.
برای حرکت دادن آسان وب سایت وردپرس خود، خط زیر را در فایل wp-config.php خود جایگذاری کنید و سپس مراحل توضیح داده شده در WordPress Codex را دنبال کنید.

1
define('RELOCATE',true);

منبع : http://wp.tutsplus.com/tutorials/security/conquering-the-wp-config-php-file-11-good-practices/

افزایش میزان حافظه ی وردپرس

به طور پیش فرض، وردپرس پیکربندی شده است که حافظه ی PHP را که استفاده میکند به ۳۲M محدود کند. اگر پیامی مانند “Allowed memory size of xxxxxx bytes exhausted” دریافت کنید، ممکن است لازم باشد که این محدوده را به شکلی که در زیر نشان داده شده است افزایش دهید:

1
define('WP_MEMORY_LIMIT', '96M');

منبع : http://digwp.com/2010/08/pimp-your-wp-config-php/

تعمیر خودکار پایگاه داده ها

با نسخه ۲.۹ به وردپرس اضافه شده است، یک پشتیبانی بهینه سازی پایگاه داده ها به صورت خودکار وجود دارد، که می توانید آن را فعال کنید که این کار با اضافه کردن تعریف زیر به فایل wp-config.php خود و فقط در زمانی که این ویژگی مورد نیاز است، انجام می شود.

1
define('WP_ALLOW_REPAIR', true);

منبع : http://digwp.com/2010/08/pimp-your-wp-config-php/

راه آسان اشکال زدایی وردپرس

هنگامی که در حال توسعه و یا اشکال زدایی هستید، نشان دادن اشتباهات مفید است. اما زمانی که سایت شما زنده است، ممکن است نخواهید خطاهای بالقوه خود را به بقیه نشان دهید. در اینجا راه حل ساده برای نشان دادن خطاها، تنها زمانی که یک پارامتر debug=debug روی URL پیدا می شود، وجود دارد.
اولین کاری که باید انجام دهید این است که کد زیر را در فایل wp-config.php جایگذاری کنید:

1
2
if ( isset($_GET['debug']) && $_GET['debug'] == 'debug')
  define('WP_DEBUG', true);

پس از اینکه این کار انجام شد، همانطور که در زیر نشان داده شده است، به سادگی یک پارامتر GET را به URL صفحه ای که می خواهید اشکالزدایی شود، اضافه کنید:

1
http://www.wprecipes.com/contact?debug=debug

منبع : http://yoast.com/wordpress-debug/

اجبار به استفاده از SSL برای wp-admin

اگر وردپرس خود را بر روی یک سروری که از SSL پشتیبانی می کند،اجرا می کنید، ممکن است بخواهید به همه ی کاربردهای SSL دسترسی پیدا کنید که بر روی تمام بخش های مدیریت سایت شما کار کند. برای انجام این کار، همانطور که در زیر نشان داده شده است، به سادگی ثابت FORCE_SSL_ADMIN را در فایل wp-config.php خود تعریف کنید:

1
define('FORCE_SSL_ADMIN', true);

منبع : http://www.wprecipes.com/how-to-force-using-ssl-on-wp-admin-directory

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

از زمان نسخه ی ۲.۸، وردپرس به شما اجازه می دهد که برای کنترل دسترسی به میزبان خاص از پشت یک سرور پروکسی، ثابتی تعریف کنید.

1
define('WP_HTTP_BLOCK_EXTERNAL', true);

این کد از زمان به کار گیری درخواست های خارجی را مسدود می کند. اگرچه، برخی از افزونه ها برای درست کار کردن به درخواست های خارجی نیاز دارد. اگر برای شما مشکلاتی بوجود می آید، با جایگذاری کد زیر در wp-config.php می توانید یک لیست سفید تعریف کنید. فراموش نکنید که به جای URL من، URL مورد نیاز توسط افزونه را قرار دهید، و توجه داشته باشید که باید اجازه ی دسترسی به api.wordpress.org را به منظور اطمینان از عملکرد مناسب فایل های اصلی و افزونه ها، بدهید.

1
define('WP_ACCESSIBLE_HOSTS', 'wordpress98.com');

منبع : http://www.wprecipes.com/block-external-requests-on-your-wordpress-blog

تعریف URL وب سایت

دو تابع WP_SITEURL و WP_HOME که در وردپرس ۲.۲ معرفی شد، مقدار جدولی wp_options را برای صفحه ی اصلی تحت الشعاع قرار می دهد اما آن را برای همیشه تغییر نمی دهد، که می تواند در هنگام حرکت یک وب سایت به یک دامنه ی جدید بسیار مفید باشد.

1
2
define('WP_HOME', 'http://wordpress98.com');
define('WP_SITEURL', 'http://wp98.co');

منبع : http://www.wordpress98.com


ترفندهای وردپرس که لازمتان میشود !

 

Powerful WordPress Tips And Tricks 21 ترفند وردپرس که لازمتان میشود !

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

می توانم بگویم که من از ازل مشغول به کار با وردپرس بوده ام، و حتی با این حال که همیشه با منبع کد در حال کار کردن بوده ام، هنوز هم راهنمایی ها و ترفندها ی جدید کشف می کنم. من خودم یک لیست ۲۱ موردی را گردآوری کرده ام که بسیار سودمند، هوشمند، سرگرم کننده و یا بهترین شیوه هایی هستند که به ندرت دنبال شده اند. امیدوارم که هر کس چیز جدیدی در لیست پیدت کند!

۱. وردپرس دارای هزاران اسکریپت است

با استفاده از دو تابع بی نظیر wp_enqueue_script() و wp_enqueue_style()، می توانید طرح ها و اسکریپت ها را به راحتی در مدیریت استفاده کنید. اما آیا می دانستید که وردپرس تعداد زیادی اسکریپت پیش ساخته دارد؟ jQuery ، بسیاری از عناصر UI jQuery ، فرم jQuery ، موضوع های SWF، MCE های زیر، Jcrop ها و Thickbox ها که از همه شناخته شده تر هستند. لیست کامل را می توان در مستندات وردپرس یافت. اگر علاقه مند به یادگیری چگونگی استفاده از به نوبت قراردادن توابع به طور موثر هستید، من “راهنمای توسعه دهندگان برای ایجاد ستیزه ی رایگان میان جاوا اسکریپت و CSS در وردپرس” توصیه می کنم که در Smashing Magazine موجود است!

۲. جایگزین کردن سازه در (Built-In) اسکریپت با غیر فعال کردن ثبت آنها

اگر ناچار باشید، می توانید از نسخه های اسکریپت ها به جای سازه ها استفاده کنید. استفاده از جدیدترین نسخه ی jQuery کار متداولی است(هر چند نه لزوما خوب)، که می تواند به صورت زیر انجام شود.

1
2
3
4
5
6
function my_scripts_method() {
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', get_template_directory_uri() . '/js/jquery-new.js');
    wp_enqueue_script( 'jquery' );
}
add_action('wp_enqueue_scripts', 'my_scripts_method');

اما این کار را تنها برای پز دادن در مورد استفاده از جدیدترین چیزها، انجام ندهید. وردپرس نسخه ای از jQuery را استفاده می کند که مطمئنا از حداکثر سازگاری برخوردار است.
تنها در صورتی از نسخه ی دیگری از jQuery استفاده کنید که با مشکلات مرتبط با سازگاری مواجهه می شوید، مثلا یک افزونه ای که به طور خاص به آن نیاز دارد.

۳. فشرده کردن تصاویر JPG ایده آل

این یک مثال کلاسیک است که چرا کار کردن در یک تیم مفید است. دوست خوب من Lars، به من گفت که وردپرس به منظور حفظ فضا و پهنای باند، برای تصاویر ارائه شده در وب سایت، کیفیت ۱۰۰٪ استفاده نمی کند. او البته به من یک راه حل نشان داد:

1
2
3
4
add_filter( 'jpeg_quality', 'smashing_jpeg_quality' );
function smashing_jpeg_quality() {
    return 100;
}

وردپرس به طور پیش فرض از کیفیت ۹۰٪ استفاده می کند. در اکثر موارد این امر مشکلی ایجاد نمی کند، من شک دارم که بسیاری از مردم بتوانند تفاوت ها را متوجه شوند. اما اگر کیفیت درجه یک تصویر در وب سایت شما مهم است (برای نمایش نمونه کارهایتان، عکاسی، و غیره)، تغییر دادن مقدارها ممکن است بهترین کار باشد.

۴. ریدایرکت خوراک به فیدبرنر

فیدبرنر تقریبا بر روی هر وبلاگی که من بر روی آن کار کرده ام استفاده شده است، و در عین حال هرگز یقینا ندانستم که دقیقا چگونه آن را تنظیم کنم. با تشکر از Elio به خاطر نوشتن “۱۰ نکته برای بهینه سازی پوسته ی وردپرس شما“، که شامل این قطعه می شود:

1
2
3
4
5
6
7
add_action( 'template_redirect' , 'smashing_rss_redirect');
function smashing_rss_redirect() {
    if ( is_feed() AND !preg_match( '/feedburner|feedvalidator/i', $_SERVER['HTTP_USER_AGENT'] ) ){
        header( 'Location: http://feeds.feedburner.com/my_smashing_feed' );
        header( 'HTTP/1.1 302 Temporary Redirect' );
    }
}

5. استفاده از توابع طبقه بندی عمومی

تعدادی از توابع طبقه بندی می توانند هم طبقه بندی های سفارشی شما را انجام دهند و هم تگ های سازه ها و دسته بندی ها را اداره کنند. مرجع توابع مستندات، شامل لیست کاملی از توابع طبقه بندی می شود. من به طور ویژه دوست دارم که از get_term() ، get_terms() و wp_get_object_terms() استفاده کنم. برای منطبق کردن بیشتر چیزها، تا اندازه ای که می توانم از این توابع استفاده می کنم، حتی برای تگ ها و دسته ها.

۶. تنظیم و راه اندازی Sessions در وردپرس

Sessions ها برای ذخیره سازی اطلاعات بین صفحات، فوق العاده هستند و به طور گسترده ای در وب سایت ها استفاده می شوند. وردپرس اصلا آنها را به طور داخلی استفاده نمی کند، بنابراین Sessions ها هرگزتنظیم نمی شوند. با استفاده از روش زیر، می توانید یک Sessions در تمام صفحات، قبل از هر گونه خروجی، تنظیم کنید.

1
2
3
4
5
6
add_action( 'init', 'smashing_session_start' );
function smashing_session_start() {
    if ( !session_id() ) {
        session_start();
    }
}

توجه داشته باشید که، در حالی که Sessions ها به طور کلی بسیار امن هستند، چک کردن IP و یا اضافه کردن حفاظت nonce را برای امنیت بیشتر انجام دهید. هر چند، اگر با اطلاعات غیر حساس کار می کنید، جای نگرانی نخواهد بود. برای اطلاعات بیشتر به مقاله ی عالی Mark Jaquith در موردnonces مراجعه کنید.

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function list_hooked_functions($tag=false){
    global $wp_filter;
    if ($tag) {
        $hook[$tag]=$wp_filter[$tag];
        if (!is_array($hook[$tag])) {
            trigger_error("Nothing found for '$tag' hook", E_USER_WARNING);
            return;
        }
    }
    else {
        $hook=$wp_filter;
        ksort($hook);
    }
    
    echo '<pre>';
    
    foreach($hook as $tag => $priority){
        echo "<br />&gt;&gt;&gt;&gt;&gt;\t<strong>$tag</strong><br />";
        ksort($priority);
        foreach($priority as $priority => $function){
            echo $priority;
            foreach($function as $name => $properties) {
                echo "\t$name<br />";
            }
        }
    }
    echo '</pre>';
    return;
}

بدون هیچ استدلالی مورد استفاده قرار می گیرد، شما یک لیست خوب از تمام توابع هوک شده را دریافت خواهید کرد. این کار کمی طولانی خواهد بود، بنابراین می توانید برای کمی محدود کردن لیست یک قلاب مشخص کنید. این امر به طور ویژه در هنگام رفع مشکل و یا در زمان اولویت بندی قلاب ها، مورد استفاده قرار میگیرد. دانستن اینکه چه چیزی و چگونه به wp_head() قلاب شده است، مهم است، و این تابع یک دارایی بزرگ است!

۸. اضافه کردن تگ های پاراگرافی به هر چیزی به طور خودکار

وردپرس این کار را به طور خودکار در مورد محتوا و گزیده ها انجام می دهد، اما هیچ دلیلی وجود ندارد که آن را در جاهای دیگری استفاده نکنیم. تابعی که مسئول تبدیل کردن دو خطی به پاراگراف است، wpautop() است.

1
2
3
4
$my_text = 'خوش آمدید!
در همیار وردپرس یک عالمه وقت و فرصت برای یادگیری وردپرس دارید';
echo wpautop( $my_text );

گاهی اوقات می خواهید که این فیلتر را به طور پیش فرض غیر فعال کنید، می توانید این کار را با حذف کردن آن از محتوا و گزیده ها انجام دهد، مانند زیر:

1
2
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

9. ارسال ایمیل با استفاده از وردپرس

کمی قبل، من یک مقاله طولانی در باره ی “ایجاد ایمیل های عالی برای وب سایت وردپرس شما” نوشتم که بخشی از آن باید با تابع wp_mail() کار کند. این توابع به شما اجازه می دهد که از سازه ها برای ارسال ایمیل به کاربران استفاده کنید.

1
2
$message = 'سلام ! باتشکر از اینکه خواننده پست من بودی , امیدوارم باز هم به ما سر بزنی.';
wp_mail( 'someonesemail@example.com', 'تشکر بابت خواندن پست!', $message);

شما همچنین می توانید محتوای HTML را با استفاده از یک فیلتر ارسال کنید:

1
2
3
4
add_filter ("wp_mail_content_type", "smashing_mail_content_type");
function smashing_mail_content_type() {
    return "text/html";
}

10. لینک های صفحه گذاری بومی

در حدود شش ماه پیش بود که متعجبانه متوجه شدم که برای انجام صفحه بندی مناسب به هیچ افزونه ای نیاز نداریم (یعنی، نه فقط برای لینک های “Previous” و “Next”)، می توانید این کار را با یک تابع بومی انجام دهید. تابع paginate_links() نه فقط یک حلقه ی وردپرس است بلکه یک تابع کوچک و مفید است که به شما اجازه می دهد تا برای هر نوع محتوایی صفحه بندی نشان دهید.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Pagination for a WordPress loop
$list = new WP_Query( $query_args );
$pagination = array(
    'base'       => str_replace( 99999, '%#%', get_pagenum_link( 99999 ) ),
    'format'     => '?paged=%#%',
    'current'    => max( 1, get_query_var( 'paged' ) ),
    'total'      => $list->max_num_pages,
    'next_text'  => 'next',
    'prev_text'  => 'previous'
);
echo '<div class="pagination primary-links">' . paginate_links( $pagination ) . '</div>';
// Pagination for anything
$list = range(1, 100);
$items_per_page = 12;
$pagination = array(
    'base'       => get_bloginfo( 'url' ) . '/mypage/%_%',
    'format'     => '?paged=%#%',
    'current'    => $_GET['current_page'],
    'total'      => ceil( max($list) / $items_per_page ),
    'next_text'  => 'go forth',
    'prev_text'  => 'go back'
);
echo '<div class="pagination primary-links">' . paginate_links( $pagination ) . '</div>';

11. بارگذاری آسان فایل ها

وردپرس برای همه چیز، گرفته از چک کردن نوع فایل تا پیدا کردن فهرست بارگذاری، تعدادی توابع بارگذاری بسیار عالی دارد. نا مفهوم ترین تابع، تابع wp_upload_bits() است، که می توانید برای بارگذاری یک فایل در فهرست بارگذاری استفاده کنید.

1
2
$upload = wp_upload_bits( $_FILES['myfile']['name'], null, file_get_contents( $_FILES['myfile']['tmp_name'] ) );
echo 'به خوبی آپلود شد! مسیر فایل ' . $upload['file'] . ' و آدرس فایل ' . $upload['url'];

12. نمایش زمان Twitter-Like

این هم شوک دیگری بود که چند وقت پیش به من وارد شد، به ویژه اینکه این توانایی از نسخه ی ۱.۵ در وردپرس بوده است! اگر می خواهید به بینندگان تاریخ روز را در یک فرمت قابل خواندن توسط آدمیزاد نشان دهید، مثل “۵ دقیقه پیش” یا “یک ماه پیش،” تابع human_timed_diff() را امتحان کنید.

1
2
3
4
$diff = human_time_diff( '2012-05-05 12:05:00', '2012-05-05 12:10:00' );
echo 'این توییت ارسال شده در  ' . $diff . 'پیش';
// Output: این توییت در ۵ دقیقه پیش ارسال شده

۱۳. ورود به عنوان هر کاربری

اگر در حال ایجاد یک وب سایت پیچیده با نقش های بسیاری هستید، قادر بودن به سوئیچ کردن آسان و سریع بین آنها مفید خواهد بود. تابع wp_set_auth_cookie() به شما اجازه می دهد تا کاربران فعلی را بر اساس ID وارد کنید.

1
2
$user_id = 4;
    wp_set_auth_cookie( $user_id );

در هنگام استفاده از این تابع بسیار باشید که بدون تیک خوردن باقی بماند، زیرا که می تواند هر کاربری را به عنوان کاربر شماره ۴ وارد سیستم کند. حتی در هنگام آزمایش، من هدف آن را مخصوصا به سمت IP خودم قرار دادم، و شاید حتی برای اطمینان بیشتر به یک رشته ی URL خاص. این بخش می گوید که با یک ایمنی مناسب، این می تواند به عنوان بخشی از اسکریپت سفارشی ورود به سیستم استفاده شود.

۱۴. اضافه کردن زمینه های پروفایل های سفارشی در بخش مدیریت

نمی توانم بگویم که وردپرس برای سفارشی کردن پروفایل ها در بخش مدیریت راه کارهای زیادی ارائه می دهد. به خصوص امروزه، زمانی که می خواهید توییتر و دیگر حساب های اجتماعی نویسندگان را نشان دهید، این یک نقص است. هر چند، می توان این مشکل را به راحتی حل کرد. اینجا را ببینید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
add_action( 'show_user_profile', 'smashing_profile_fields' );
add_action( 'edit_user_profile', 'smashing_profile_fields' );
function smashing_profile_fields( $user ) {
?>
    <h3>سایت های اجتماعی</h3>
    <table class="form-table">
        <tr>
            <th><label for="twitter">توییتر</label></th>
            <td>
                <input type="text" name="twitter" id="twitter" value="<?php echo esc_attr( get_the_author_meta( 'twitter', $user->ID ) ); ?>" /><br />
                <span class="description">نام کاربری شما در توییتر</span>
            </td>
        </tr>
        <tr>
            <th><label for="twitter">فیس بوک</label></th>
            <td>
                <input type="text" name="facebook" id="facebook" value="<?php echo esc_attr( get_the_author_meta( 'facebook', $user->ID ) ); ?>" /><br />
                <span class="description">آرس پروفایل فیس بوک</span>
            </td>
        </tr>
        
        <tr>
            <th><label for="twitter">لینک دن</label></th>
            <td>
                <input type="text" name="linkedin" id="linkedin" value="<?php echo esc_attr( get_the_author_meta( 'linkedin', $user->ID ) ); ?>" /><br />
                <span class="description">آدرس پروفایل کاربری در لینک دن</span>
            </td>
        </tr>
    </table>
<?php
}
add_action( 'personal_options_update', 'smashing_save_profile_fields' );
add_action( 'edit_user_profile_update', 'smashing_save_profile_fields' );
function smashing_save_profile_fields( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) )
        return false;
    update_user_meta( $user_id, 'twitter', $_POST['twitter'] );
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );
    update_user_meta( $user_id, 'linkedin', $_POST['linkedin'] );
}

15. با سهولت پاکسازی کردن URL ها

در هنگام کار با URL ها، همیشه مطمئن شوید که آنها به درستی شکل گرفته اند و هیچ گونه کاراکتر نامعتبر و یا خطرناکی را شامل نمی شوند. تابع esc_url() به شما اجازه می دهد که دقیقا این کار را انجام دهید.

1
2
$my_url = 'http://mypage.com/?awesome=true';
    $url = esc_url( $my_url );

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

۱۶. توانمند سازی ابزارک های متنی

برای ایجاد بسیار بهتر ابزارک متنی، می توانید استفاده از شورت کد در آنها را فعال کنید. این یک ابزار عالی برای توسعه دهندگان تم است، زیرا باعث می شود محصول برای کاربر بسیار انعطاف پذیرتر باشد.

1
add_filter( 'widget_text', 'do_shortcode' );

17. اضافه کردن انواع Custom Post در خوراک RSS

به راحتی قادر نبودن به انجام این کار از بخش مدیریت یک مسئله ی بزرگ است. بسیاری از صاحبان وب سایتها محتوایشان را در پست های سفارشی جدا می کنند، و آنها همچنین می خواهند که همه ی آیتم هایشان در خوراکها نشان داده شود. هرگز نترسید! یک تابع در اینجا داریم!

1
2
3
4
5
6
7
add_filter('request', 'smashing_custom_feed');
function smashing_custom_feed( $vars ) {
    if ( isset( $vars['feed'] ) ) {
        $vars['post_type'] = get_post_types();
    }
    return $vars;
}

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

1
2
3
4
5
6
7
8
9
add_filter('request', 'smashing_custom_feed');
$post_type_list = array( 'post', 'products' );
function smashing_custom_feed( $vars ) {
    if ( isset( $vars['feed'] ) AND !isset( $vars['post_type'] ) ) {
        $vars['post_type'] = $post_type_list;
    }
    return $vars;
}

18. حلقه های وردپرس را نشکنید

حلقه های متعدد عالی هستند، اما اگر به درستی استفاده نشوند می توانند خراب کاری کنند. برای اطمینان از این که لوپ های شما به خوبی کار می کنند و شما هنوز هم می توانید از همه ی توابعی که بر اساس توابع جهانی هستند، استفاده کنید، کوئری اصلی را در یک متغیر موقت ذخیره کنید.

1
2
3
4
5
6
7
$tmp_query = $wp_query;
query_posts('cat=5&order=ASC');
while( have_posts() ) : the_post()
?>
    <a href="<?php the_permalink() ?>'><?php the_title() ?></a><br />
<?php
$wp_query = $tmp_query;

19. کوئری های منبع داده های سفارشی

اگر چیزی بیشتر از آنچه که پیش فرض توابع وردپرس به شما می دهد، نیاز دارید، می توانید از $wpdb ، طبقه ی پایگاه داده های وردپرس برای کوئری کردن پایگاه داده ها به طور مستقیم، استفاده کنید.

1
$recent_users = $wpdb->get_results( "SELECT display_name, user_registered FROM $wpdb->users ORDER BY user_registered DESC LIMIT 0,10" );

این طبقه دارای ویژگی ها و توابع بسیار منحصر به فردی است. برای آموزش کامل تر به “تعامل با پایگاه داده های وردپرس” مراجعه کنید.

۲۰. سفارشی کردن باز بینی پست وردپرس

ویژگی بازبینی در وردپرس بسیار عالی است، اما اکثر کاربران از آن استفاده نمی کنند. ورودی های پایگاه داده ها برای بازبینی ایجاد شده اند، حتی اگر از آنها استفاده نشود. در حالی که آنها یک ضربه ی بزرگ به عملکرد سرور تان نمی زنند، اگر شما از بازبینی ها استفاده نمی کنید، می توانید آنها را با قرار دادن کد زیر در فایل wp-config.php غیرفعال کنید.

1
2
3
4
5
// To remove revisions
define( 'WP_POST_REVISIONS', FALSE );
// To limit them
define( 'WP_POST_REVISIONS', 5 );

21. طراحی کردن نظر نویسنده

اگر می خواهید که نظر نویسنده هم ظاهر شود، به سادگی ار طبقه ی bypostauthor در CSS خود، استفاده کنید.

1
2
3
4
li.bypostauthor {
    background:#fafafa;
    color:#555;
}

22. ذخیره کردن کل صفحه ی شما در یک متغیر

در برخی موارد، ذخیره کردن تمام خروجی های خود در یک متغیر می تواند بسیار مفید باشد. این کار به شما اجازه می دهد که به راحتی تغییرات جهانی ایجاد کنید، کدها را فشرده و یا مبهم کنید و کارهای زیاد دیگری انجام دهید. همه آنچه که نیاز داریم بافر کردن خروجی PHP ها و دو قلاب است.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
add_action('wp_head', 'smashing_buffer_start');
add_action('wp_footer', 'smashing_buffer_end');
function smashing_buffer_start() {
    ob_start( 'smashing_callback' );
}
function buffer_end() {
    ob_end_flush();
}
function smashing_callback( $content ) {
    // Feel free to do things to the content here
    $content = str_replace( 'great', 'awesome', $content );
    echo $content;
}

و این فهرست ادامه دارد
آیا شما هر گونه راهنمایی و یا ترفند مورد علاقه ی خودتان در وردپرس و یا بهترین شیوه ای که آرزو می کنید بیشتر دنبال شود، دارید؟ لطفا آنها را همین جا و در قسمت نظرات با ما در میان بگذارید که ما هم بتوانیم چیزهای جدیدی یاد بگیریم!
کنار هم باشیم و وردپرس و حرفه ای یاد بگیریم
ارادتمند / ندا گرجی زاده

 

منبع:http://www.wordpress98.com


چگونه در وردپرس Meta Box ایجاد کنیم

 

How to Create Custom WordPress Write Meta Boxes چگونه در وردپرس Meta Box ایجاد کنیم ؟

ایجاد متا باکس ها، بخش مهمی از تم و توسعه ی افزونه های وردپرس است. این باکس ها راهی برای اضافه کردن یک ویرایشگر جذاب به صفحه ی پست و جلوگیری از مجبور کردن کاربران به تکیه بر بخش های سفارشی است. اگر یک پست سفارشی در وردپرس ایجاد کنید، و بخواهید یک سری داده به آن اضافه کنید، مطمئنا، می توانید از زمینه های سفارشی استفاده کنید، اما باید بگویم که آنها خیلی زیبا نیستند. شروع کار با متا باکس های سفارشی آسان است، پس اجازه دهید به بررسی آنها بپردازیم.

متا باکس های سفارشی چه هستند؟

تصور کنید که شما در حال کار بر روی یک تم برای یک مشتری هستید که می خواهد مجموعه ی گسترده ای از پوسترهای کنسرت های خود را کاتالوگ کند. شما بلافاصله به دنبال قابلیت هایی در وردپرس اصلی خواهید گشت تا ببینید که چگونه می توانید تم را سازماندهی کنید: هر پست نشان دهنده ی یک پوستر است، که برای اضافه کردن یک تصویر، عنوان و شرح مناسب است. همچنین می توانیم از سیستم های دسته بندی و تگ در داخل وردپرس برای سازماندهی پوستر استفاده کنیم. اما چه می شد اگر می خواستیم یک نوع جدید از داده های متا را به “نقش” هر پوستر اضافه کنیم؟ وردپرس تقریبا هیچ قابلیت آماده ای برای انجام این کار ندارد… وجود این مشکل ما را به جعبه های متای سفارشی هدایت می کند.
یک متا باکس سفارشی در تئوری فوق العاده ساده است و به شما اجازه می دهد تا قطعه های سفارشی داده ها را به یک پست یا یک صفحه ی وردپرس اضافه کنید – بهتر از آن، این است که می تواند مستقیما در بسیاری از صفحات پیش فرض در داخل وردپرس جای گذاری شود، بنابراین برای اینکه آسانتر بتواند توسط انواع غیر فنی مورد استفاده قرار گیرد، می توانید به راحتی آن را در داخل Post-Editor جا دهید. همانطور که در مقدمه گفته شد: شما می توانید این نوع “داده های متا” را با استفاده از سازه در بخش های سفارشی برای یک پست یا یک صفحه به پست های خود اضافه کنید. انجام این کار اشتباه نیست، اما خیلی هم برازنده و کاربر پسند نیست.
در عوض، شما باید یک جعبه ی متای سفارشی ایجاد کنید که شامل بخش هایی برای همه ی اطلاعاتتان باشد و دقیقا زمانی که پست منتشر می شود، همه چیز را ذخیره سازی کند.این همان کاری است که ما در اینجا پوشش می دهیم. این امر در سه مرحله ی بزرگ انجام می شود:

• اضافه کردن متا باکس
• خروجی گرفتن از متا باکس ها
• ذخیره کردن داده ها (از راه درست – بله درست حدس زدید، راه اشتباه هم وجود دارد)

ذکر این نکته که بسیاری از این اطلاعات را نیز می توان در داخل پست سفارشی نوع API استفاده کرد، ضروری نیست (بعدا به این نکته خواهیم پرداخت) است، اما فقط به خاطر اینکه امروز همه چیز را متمرکز نگه داریم، قصد داریم که این را به طور مستقیم به ویرایشگر پست پیش فرض اضافه کنیم.
برای مخاطبان پیشرفته تر: بله، انواع پست سفارشی جایی است که ما نهایتا به آنجا خواهیم رسید، اما مهم است که در ابتدا به چندین اصل کلی بپردازیم. به علاوه، به این دلیل که شما می توانید متا باکس های سفارشی را در همه نوع مکانی استفاده کنید، دانستن آن برای هر کسی خوب است.
در این آموزش همه چیز در فایل functions.php تم کار خواهد کرد. به هر حال، اینجا محل درستی برای آن نیست. اگر در حال اضافه کردن داده هایی به یک پست هستید، این احتمال وجود دارد که شما آنها را بدون در نظر گرفتن طراحی ظاهر کاربری، در آنجا می خواهید. به همین ترتیب، باید این کد را در مکانی قرار دهید که به طراحی شما وابسته نیست: جایی مثل یک فایل افزونه.

مرحله ۱: اضافه کردن متا باکس

meta box title چگونه در وردپرس Meta Box ایجاد کنیم ؟

وردپرس برای اضافه کردن متا باکس ها، در صفحه ی مدیریت، به سادگی یک تابع ارائه می کند: add_meta_box.
وارد کردنCODEX برای این تابع به خوبی انجام شده است، اما در اینجا یک مرور کوتاه بر آن آمده است. این یک نمونه است:

1
<?php add_meta_box( $id, $title, $callback, $page, $context, $priority, $callback_args ); ?>

$id به عنوان ID html کد باکس قرار می گیرد. این کار در صورتی که شما در حال بارگذاری CSS سفارشی یا جاوا اسکریپت در صفحه ی ویرایش به منظور رسیدگی به گزینه ها هستید، بسیار مفید است. در غیر این صورت، این امرچندان هم مهم نیست.
$title در بالای متا باکس نشان داده شده است.
$callback تابعی است که در واقع از متا باکس خروجی می گیرد. این موضوع را در مرحله ۲ مورد بررسی قرار خواهیم داد.
$page جایی است که می خواهید متا باکس در آنجا نمایش داده شود. این باید به یک “post” و یا یک “page” و یا ” some_custom_post_type ” مرتبط باشد.
$context جایی است که متا باکس نمایش داده می شود. گزینه ی “normal” آن را در زیر ویرایشگر پست قرار می دهد. گزینه ی “side” آن را به نوار کناری سمت راست صفحه ی ویرایش منتقل می کند (به وسیله ی دسته بندی ها، تگ ها و غیر). گزینه ی “advanced” نیز باکس را در همان ستونی که ویرایشگر پست وجود دارد، قرار می دهد.
$priority به وردپرس می گوید که مکان متا باکس در چه ناحیه ای باشد. گزینه های “high”، “default” یا “low” به ترتیب متا باکس ها را در نزدیکی بالای صفحه، در موقعیت طبیعی آنها و یا در پایین صفحه قرار می دهد. از آنجایی که همه ی متا باکس ها قادر به کشید شدن هستند، $priority کار چندان بزگی نیست.
سرانجام $callback_args اجازه می دهد تا داده هایتان را به شکل یک آرایه به تابع $callback منتقل کنید. ما قصد نداریم از آن در این اینجا استفاده، اما می تواند برای انتقال برخی داده ها به متا باکس مفید باشد. فرض کنید که افزونه ی شما چندین گزینه داشت که محتویات نمایش داده شده در متا باکس ها را تحت تاثیر قرار می داد. شما می توانید اطلاعات این گزینه ها را از طریق آرایه ی $callback_args منتقل می کند.
بنابراین، شکل add_meta_box ما شبیه به این خواهد بود.

1
<?php add_meta_box( 'my-meta-box-id', 'My First Meta Box', 'cd_meta_box_cb', 'post', 'normal', 'high' ); ?>

نمی توانیم این را به تنهایی در فایل افزونه استفاده کنید. نتیجه ی انجام این کار، صفحه ی سفید مرگ و خطای مصیبت بار PHPمثل: فراخوانی به تابع تعریف نشده، خواهد بود. چرا؟ زیرا قبل از آن وردپرس بارگذاری شود، تابع add_meta_box را فراخوانی کرده بودیم. بنابراین نیاز داریم که از یک قلاب وردپرس استفاده کنیم، که بخشی از API پلاگین است. در واقع، توابع به یک عملکرد داده شده به وردپرس یا قلاب فیلتر، قلاب می شود، بنابراین زمانی که این قلاب بارگذاری شود، این توابع شروع به کار خواهند کرد. با پیچیدن تماس add_meta_box ما در یک تابع، و سپس اتصال آن تابع به قلاب عملکرد add_meta_boxes، از خطاهای مصیب بار جلوگیری خواهیم کرد.
کد ما برای اضافه کردن متاباکس به صفحه ی پستهایمان، چیزی شبیه به این خواهد بود:

1
2
3
4
5
6
7
<?php
add_action( 'add_meta_boxes', 'cd_meta_box_add' );
function cd_meta_box_add()
{
    add_meta_box( 'my-meta-box-id', 'My First Meta Box', 'cd_meta_box_cb', 'post', 'normal', 'high' );
}
?>

مرحله ۲: خروجی گرفتن از متا باکس

برای اضافه کردن متا باکس کد بالا کافی است، اما حالا باید از چیزی خروجی بگیریم و بخش اضافه کنیم. این فقط یک نوع کد HTML است که برای نمایش دادن اطلاعات ذخیره شده، با کمی PHP مخلوط شده است. نیازی به دخالت دادن تگ فرم ها نداریم زیرا که وردپرس این کار را برای ما انجام خواهد داد.
رشته ای را که ما به add_meta_box به عنوان $callback انتقال دادیم به یاد دارید؟ در حال حاضر می خواهم یک تابع با همین نام یجاد کنیم. این تابع از تمام چیز هایی که در متا باکس نمایش داده می شود، مراقبت خواهد کرد.

1
2
3
4
5
6
<?php
function cd_meta_box_cb()
{
    echo 'What you put here, show\'s up in the meta box';  
}
?>

meta box content 1 چگونه در وردپرس Meta Box ایجاد کنیم ؟

ما قصد داریم بخش های مختلفی را به متا باکسهایمان اضافه کنیم: یک ورودی متن، یک منوی کرکره ای و یک جعبه ی تیک. اجازه دهید با ورودی متن شروع کنیم.

اضافه کردن input

1
2
3
4
5
6
7
8
9
<?php
function cd_meta_box_cb()
{
    ?>
    <label for="my_meta_box_text">Text Label</label>
    <input type="text" name="my_meta_box_text" id="my_meta_box_text" />
    <?php   
}
?>

اما چطور است که واقعا اطلاعاتی را نمایش دهیم؟ خوب، همانطور که در مرحله ۳ می ببینید، ما این داده ها را با استفاده از تابع update_post_meta در جدول wp_postmeta ، ذخیره می کنیم. این تابع دارای دو تابع مرتبط با آن به نام های get_post_meta و get_post_custom است، که از wp_postmeta اطلاعات کسب می کند. get_post_meta تنها از یک کلید اطلاعات کسب می کند، در حالی که get_post_custom از همه ی آنها اطلاعات کسب خواهد کرد. از آنجا که ما واقعا تنها از یک بخش استفاده می کنیم، اجازه دهید از get_post_meta استفاده کنیم.
همچنین توجه داشته باشید که تابع add_meta_box به callback ما یک متغیر $post را منتقل می کند که یک موضوع پست است.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<?php
function cd_meta_box_cb( $post )
{
$values = get_post_custom( $post->ID );
$text = isset( $values['my_meta_box_text'] ) ? esc_attr( $values['my_meta_box_text'][0] ) : ”;
$selected = isset( $values['my_meta_box_select'] ) ? esc_attr( $values['my_meta_box_select'][0] ) : ”;
$check = isset( $values['my_meta_box_check'] ) ? esc_attr( $values['my_meta_box_check'][0] ) : ”;
    ?>
<p>
    <label for="my_meta_box_text">Text Label</label>
    <input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" />
        </p>
    <?php       
}
?>

اضافه کردن منوی کرکره ای

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php   
function cd_meta_box_cb( $post )
{
$values = get_post_custom( $post->ID );
$text = isset( $values['my_meta_box_text'] ) ? esc_attr( $values['my_meta_box_text'][0] ) : ”;
$selected = isset( $values['my_meta_box_select'] ) ? esc_attr( $values['my_meta_box_select'][0] ) : ”;
$check = isset( $values['my_meta_box_check'] ) ? esc_attr( $values['my_meta_box_check'][0] ) : ”;
    ?>
    <p>
        <label for="my_meta_box_text">Text Label</label>
        <input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" />
    </p>
    
    <p>
        <label for="my_meta_box_select">Color</label>
        <select name="my_meta_box_select" id="my_meta_box_select">
            <option value="red" <?php selected( $selected, 'red' ); ?>>Red</option>
            <option value="blue" <?php selected( $selected, 'blue' ); ?>>Blue</option>
        </select>
    </p>
    <?php   
}
?>

با اضافه کردن بخش دوم، تماس get_post_meta را به get_post_custom تغییر داده ایم، که یک آرایه شرکت پذیر از همه ی کلید ها و ارزش های سفارشی پست ها را برمی گرداند. سپس ما از طریق نام بخش ها به آنها دسترسی پیدا می کنیم. بیانیه ی نوع سوم، کد های مارا در برابر دادن هشدارهای PHP محافظت می کند (شاخص های تعریف نشده و از این قبیل). در مرحله ی ۳ به تشریح تابع esc_attr در خواهیم پرداخت.
در منو کرکره ای، قصد داریم که از یکی از مفید ترین توابع وردپرس استفاده کنیم: selected . این تابع ارزش اول یعنی اطلاعلت ذخیره شده ی ما را با ارزش دوم یعنی ویژگی
مقلیسه می کند. اگر آنها یکی باشند، این تابع، selected=”selected” را منعکس می کند، که باعث می شود این ارزش در منو کرکره ای نمایش داده شود. بسیار شیرین است و همچنین ما را از نوشتن تعداد زیادی از توابع و بیانیه های نوع سوم نجات خواهد داد. شما همچنین می توانید از تابع selected() با دکمه های رادیویی استفاده کنید.

اضافه کردن جعبه ی تیک (Check-box)

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
function cd_meta_box_cb()
{
    // $post is already set, and contains an object: the WordPress post
    global $post;
    $values = get_post_custom( $post->ID );
    $text = isset( $values['my_meta_box_text'] ) ? $values['my_meta_box_text'] : '';
    $selected = isset( $values['my_meta_box_select'] ) ? esc_attr( $values['my_meta_box_select'] ) : '';
    $check = isset( $values['my_meta_box_check'] ) ? esc_attr( $values['my_meta_box_check'] ) : '';
    
    // We'll use this nonce field later on when saving.
    wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
    ?>
    <p>
        <label for="my_meta_box_text">Text Label</label>
        <input type="text" name="my_meta_box_text" id="my_meta_box_text" value="<?php echo $text; ?>" />
    </p>
    
    <p>
        <label for="my_meta_box_select">Color</label>
        <select name="my_meta_box_select" id="my_meta_box_select">
            <option value="red" <?php selected( $selected, 'red' ); ?>>Red</option>
            <option value="blue" <?php selected( $selected, 'blue' ); ?>>Blue</option>
        </select>
    </p>
    
    <p>
        <input type="checkbox" id="my_meta_box_check" name="my_meta_box_check" <?php checked( $check, 'on' ); ?> />
        <label for="my_meta_box_check">Do not check this</label>
    </p>
    <?php   
}
?>

باز هم وردپرس تابع مفید checked() را ارائه می دهد. این کار دقیقا شبیه به selected() ارزش اول (داده های ذخیره شده ی ما) را با ارزش دوم مقایسه کرده و اگر آنها یکی باشند، checked=”checked” را منعکس می کند.
wp_nonce_field دو بخش پنهان را به متا باکس های ما اضافه می کند. یکی از آنها nonce است. آنها رشته های تصادفی از اعداد هستند که برای هر کاربر بر اساس هر وبلاگ به مدت ۲۴ ساعت معتبر هستند. Nonce ها راهی برای تأیید مقصود هستند، و آنها اطمینان حاصل می کنند که وردپرس هیچ کاری انجام نمی دهد مگر اینکه درخواست آن از یک مکان بسیار خاص آمده باشد. به عبارت دیگر، ما نمی خواهیم که با اجرا کردن تابع ذخیره شده ی خود (مرحله ی سوم را بررسی کنید) در جای دیگری بجز در قلاب save_post، به طور تصادفی اطلاعاتمان را به روز رسانی کنیم، بنابراین قبل از انجام هر کاری از معتبر بودن Nonce مطمئن شویم.

meta box content 3 چگونه در وردپرس Meta Box ایجاد کنیم ؟

مرحله ۳ ذخیره کردن اطلاعات

“هنگامی که می خواهید چیزی را به پایگاه داده های خود و یا سایت خود وارد کنید، قاعده ی شماره یک این است که: به کاربر اعتماد نکنید! حتی اگر آن کاربر خود شما هستید.”

برای ذخیره کردن اطلاعاتمان، قصد داریم که به یکی دیگر از قلابهای وردپرس تکیه کنیم: save_post.این دقیقا مانند قلاب عملکردی بالا عمل می کند:

1
<?php add_action( 'save_post', 'cd_meta_box_save' ); ?>

تابع cd_meta_box_save یک استدلال یعنی post id را دریافت خواهد کرد، و مراقب تمیز کردن و ذخیره کردن همه ی اطلاعات ما است. قلاب save_post پس از به روز رسانی کردن و یا بعد از فشار دادن دکمه ی ذخیره کردن پیش نویس، اجرا خواهد شد. بنابراین ما به تمام اطلاعات $_POST دسترسی پیدا می کنیم، که شامل بخش متا باکس های ما در داخل تابع ذخیره سازی می باشد. به هر حال قبل از اینکه ما بتوانیم هر حرکتی بکنیم، باید سه کار انجام دهیم: بررسی کنید که آیا پست به طور خودکار ذخیره می شود، ارزش nonce را که قبلا ساختیم بررسی کنید، و چک کنید تا از این امر که کاربر فعلی در واقع می تواند پست را ویرایش کند مطمئن شوید.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
add_action( 'save_post', 'cd_meta_box_save' );
function cd_meta_box_save( $post_id )
{
    // Bail if we're doing an auto save
    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    
    // if our nonce isn't there, or we can't verify it, bail
    if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;
    
    // if our current user can't edit this post, bail
    if( !current_user_can( 'edit_post' ) ) return;
}
?>

حالا به سراغ چیزهای سرگرم کننده می رویم: در حقیقت اطلاعات ما را ذخیره می کند. هنگامی که می خواهید چیزی را به پایگاه داده های خود و یا سایت خود وارد کنید، قاعده ی شماره یک این است که: به کاربر اعتماد نکنید! حتی اگر آن کاربر خود شما هستید. برای رسیدن به این هدف، قبل از اینکه هر گونه اطلاعاتی را ذخیره کنیم، باید مطمئن شویم که هیچ چیز مخربی در آن وجود ندارد. خوشبختانه وردپرس تعدادی تابع برای اعتبار سنجی (data validation) اطلاعات ارائه داده است.
شما قبلا esc_attr() را در بالا دیده اید (مرحله ۲). این یکی را در HTML کد نویسی می کند. چرا باید از این استفاده کنیم؟ به این دلیل که کاربران نتوانند در متا باکس شما یکاسکریپت وارد کنند. اگر می خواهید به تگ های HTML معینی اجازه ورود دهید اما بقیه را محروم کنید، wp_kses می توانید این کار را انجام دهد. این کار دو استدلال را شامل می شود، اولی رشته ای است که شما می خواهید بررسی کنید و دومی یک آرایه ی شرکت پذیر از تگ های مجاز است. وردپرس تعداد زیادی ابزار اعتبار سنجی اطلاعات ارائه می دهد، فقط جرات استفاده کردن از آنها را داشته باشید!
ما قصد داریم که مراقبت از تاریخاطلاعات ذخیره شده ی خود از با استفاده از تابع update_post_meta استفاده کنیم. این کار سه استدلال را در بر می گیرد: ID یک پست، کلید متا، و ارزش.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
add_action( 'save_post', 'cd_meta_box_save' );
function cd_meta_box_save( $post_id )
{
    // Bail if we're doing an auto save
    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
    
    // if our nonce isn't there, or we can't verify it, bail
    if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;
    
    // if our current user can't edit this post, bail
    if( !current_user_can( 'edit_post' ) ) return;
    
    // now we can actually save the data
    $allowed = array(
        'a' => array( // on allow a tags
            'href' => array() // and those anchors can only have href attribute
        )
    );
    
    // Make sure your data is set before trying to save it
    if( isset( $_POST['my_meta_box_text'] ) )
        update_post_meta( $post_id, 'my_meta_box_text', wp_kses( $_POST['my_meta_box_text'], $allowed ) );
        
    if( isset( $_POST['my_meta_box_select'] ) )
        update_post_meta( $post_id, 'my_meta_box_select', esc_attr( $_POST['my_meta_box_select'] ) );
        
    // This is purely my personal preference for saving check-boxes
    $chk = isset( $_POST['my_meta_box_check'] ) && $_POST['my_meta_box_select'] ? 'on' : 'off';
    update_post_meta( $post_id, 'my_meta_box_check', $chk );
}
?>

meta box final چگونه در وردپرس Meta Box ایجاد کنیم ؟

نتیجه گیری

این بود همه ی آنچه که باید برای ایجاد متا باکس ها انجام می دادید! شما باید یک متا باکس با کارکرد کامل داشته باشید. ممکن است نمونه های دیگری را در حلقه ی وب از طریق چندین بخش پیدا کنید بدون اینکه واقعا اطلاعات را تمیز کند. این روش اشتباه است. همیشه از سازه در توابع اعتبار سنجی اطلاعات استفاده کنید؛ بخش ها یا ارزش های مختلف ممکن است به اعتبار سنجی های مختلفی نیاز داشته باشند.
برای استفاده از این بخش های سفارشی در بخش ظاهر کاربری سایتتان، از توابع get_post_meta یا get_post_custom استفاده کنید (به مرحله ی ۲ مراجعه کنید).

 

منبع:http://www.wordpress98.com


اموزش درست کردن لوگو سایت

 

ساخت لوگو, نرم افزار طراحی لوگو

لوگو طراحی کنید

طراحی دنیای پیچیده‌ای دارد! گاهی اوقات احتیاج به مهارت بسیار زیادی دارد و گاهی نیز فقط یک ایده می‌تواند طرحی نو را ایجاد کند! این روزها ​لحظه به لحظه شرکت‌های جدیدی به ثبت می‌رسند، سایت‌ها و فروشگاه‌های اینترنتی جدید تاسیس می‌شوند، افراد مختلف در حرفه‌های متفاوت مشغول به‌کار می‌شوند و در بسیاری از این موارد نیز، این کسب‌وکارها نیازمند نشان، علامت تجاری و هرگونه نماد دیگری برای معرفی خود به بازار و مشتریان هستند.

 

برای طراحی لوگو دو شرط لازم است:
ـ شرط اول برخورداری از فکر خلاقانه و توانایی خلق ایده‌های نو است.

 

ـ شرط دوم نیز توانایی کار با نرم‌افزارهای گرافیکی برای پیاده‌سازی ایده‌های شماست.

 

آیا دوست دارید هر دو شرط را یک‌جا در اختیار داشته باشید؟ نرم‌افزار قدرتمند AAA Logo به شما این امکان را می‌دهد تا براحتی و در کم‌ترین زمان ممکن، ایده‌های خود را به لوگوهای باکیفیتی تبدیل کنید. با استفاده از این نرم‌افزار مشکلی برای ذهن خلاق نیز نخواهید داشت چرا که بیش از 8000 تصویر و موضوع در اشکال مختلف در این نرم‌افزار وجود دارد و شما می‌توانید با کمک آنها خلاقیت خود را چند برابر کرده و لوگوهایی را که هیچ‌گاه به ذهنتان نمی‌رسیده طراحی کنید.

 

قدم اول نصب و اجرا
شاید بسیاری از طراحان برای طراحی لوگو ابتدا یک کاغذ و قلم در دست بگیرند و ایده‌های خود را روی کاغذ رسم کنند تا در نهایت ایده نهایی خود را با استفاده از نرم‌افزارهای گرافیکی به طرح رایانه‌ای تبدیل کنند، اما AAA Logo شما را از کاغذ نیز بی‌نیاز می‌کند!

 

اولین اقدام برای طراحی نشان و لوگوی اختصاصی توسط این نرم‌افزار، دانلود و نصب نسخه‌ای از آن روی رایانه است. این نرم‌افزار در تمام نسخه‌های سیستم‌عامل ویندوز (اکس‌پی، ویستا، 7 و 8) قابل اجراست و می‌توانید با مراجعه به لینک زیر نسخه‌ای از آن را دانلود کنید:

http:‌/‌‌/‌www.aaa-logo.com‌/‌files‌/‌10929‌/aaalogo320.zip

 

قدم دوم آغاز پروژه
با اجرای نرم‌افزار AAA Logo صفحه‌ای برای شما نمایش داده می‌شود که مملو از لوگوهای مختلف است. شما می‌توانید با استفاده از کلیدهای کنترلی در این صفحه به سمت چپ و راست حرکت کرده و لوگوهای از پیش طراحی شده توسط این نرم‌افزار را مشاهده کنید.

 

در این مرحله می‌توانید با انتخاب هریک از این لوگوها (کلیک روی لوگوی موردنظر) آن را در برنامه فراخوانی کرده و نسبت به ویرایش و اعمال تغییرات روی آنها اقدام کنید. همچنین اگر می‌خواهید طراحی لوگوی منحصر‌به‌فردتان را از پایه آغاز کنید، می‌توانید کلید Esc را از روی صفحه‌کلید فشار دهید تا محیط کاربری نرم‌افزار برای شما نمایش داده شود.

 

قدم سوم گرفتن ایده
پس از ایجاد پروژه جدید، یک صفحه خالی در محیط کاربری برنامه قابل مشاهده است. این صفحه مانند کاغذ سفیدی است که طراحان در اختیار می‌گیرند و ایده‌های ذهن خود را روی آن به تصویر می‌کشند. شما نیز در این مرحله ‌باید ایده‌های ذهنتان را به تصویر بکشید و برای آن‌که ایده‌ها سریع‌تر به ذهن شما خطور کنند نیز می‌توانید از بانک موضوعات و تصاویر نرم‌افزار کمک بگیرید.

 

در بخش سمت چپ این نرم‌افزار پنجره‌ای قابل مشاهده است که تصاویر مختلفی را در خود جای داده است. شما می‌توانید با مرور این تصاویر و کلیک روی هرکدام از آنها، تصویر موردنظرتان را به صفحه منتقل کرده و در نهایت با ترکیب چند تصویر و اعمال تغییرات روی آنها، نشان جدیدی را طراحی کنید.

 

تصاویر: شما می‌توانید برای مشاهده تصاویر موجود در نرم‌افزار به منوی Object مراجعه کنید و پس از آن New Image را کلیک کنید.در این مرحله با کلیک روی گزینه Select Shape From Library می‌توانید به مجموعه تصاویر موجود در نرم‌افزار دسترسی یافته و با مرور تصاویر موجود و کلیک روی تصویر موردنظر، آن را به صفحه طراحی اضافه کنید.
توجه داشته باشید که اندازه، زاویه چرخش و رنگ موضوع انتخابی نیز در این بخش قابل تغییر است.

 

متن: نشان‌ها گاهی فقط از تصاویر تشکیل می‌شوند و گاهی نیز فقط یک متن با شکل نوشتار خاص می‌تواند یک نشان را خلق کند. گاهی نیز لوگوی پایانی حاصل از ترکیب متن و تصویر است. چنانچه قصد دارید در لوگوی موردنظرتان، از حروف و کلمات نیز کمک بگیرید می‌توانید با مراجعه به منوی Object و کلیک روی گزینه New Text متن موردنظرتان را نیز به صفحه اضافه کنید.در این بخش می‌توانید نوع فونت، اندازه، فاصله حروف از یکدیگر و رنگ متن را مشخص کنید.

 

قدم چهارم ویرایش و اعمال تغییرات
در این مرحله از کار مطمئنا شکل‌های موجود در برنامه ایده‌های خوبی را در اختیار شما قرار داده‌ و تصاویر موردنیاز را نیز به صفحه اضافه کرده‌اید. حالا ‌باید به کمک ابزارهای ویرایش و شخصی‌سازی، به رنگ‌بندی، جابه‌جایی، تغییر اندازه و… بپردازید. روش اعمال هریک از این فرآیندها به این شرح است:

موضوعات تصویری: پس از کلیک روی هریک از موضوعات تصویری به‌کار گرفته شده در پروژه، گزینه‌های مختلفی در اختیار شما قرار خواهد گرفت. این گزینه‌ها عبارت است از:

 

ـ اندازه و زاویه تصویر (Image): با کلیک روی این گزینه می‌توانید اندازه تصویر و زاویه چرخش آن را تغییر دهید.
ـ تغییر تصویر (Shape): برای تغییر یک موضوع از تصویری به تصویر دیگر می‌توانید از این گزینه کمک بگیرید.

ـ افکت و سایه (Effects): افزودن هاله‌ای نورانی به دور تصویر، اضافه کردن سایه به آن و مشخص کردن رنگ افکت‌های مربوطه و زاویه قرارگیری سایه، از جمله گزینه‌های قابل دسترسی در این بخش است.

 

ـ طیف رنگ (Gradient): تصویر شما می‌تواند یک رنگ یا طیفی از رنگ‌ها را به خود اختصاص دهد. چنانچه می‌خواهید طیف رنگ را برای تصویرتان انتخاب کنید ‌باید پس از کلیک روی این گزینه و فعال کردن گزینه Gradient Overlay، رنگ‌های موردنظرتان را انتخاب کنید.

 

ـ مجموعه رنگ‌ها (Colors): رنگ ثابت تصویر، طیف رنگ، رنگ مربوط به هاله اطراف تصویر، رنگ سایه و رنگ زمینه پروژه شما از این بخش مدیریت می‌شود.

 

موضوعات متنی: انتخاب هریک از موضوعات متنی نیز گزینه‌های متفاوتی را در اختیار شما قرار خواهد داد. برخی از این گزینه‌ها با گزینه‌های معرفی شده در بخش موضوعات تصویری مشابه است، اما برخی دیگر عبارتند از:

 

ـ مشخصات متن (Text): تغییر متن، تغییر فونت و تغییر اندازه قلم از جمله خصوصیات قابل دسترس در این بخش است.

 

ـ زاویه و پیچش (Transform): چنانچه بخواهید زاویه نمایش متن یا حرف موردنظر را در صفحه تغییر دهید یا آن را روی محیط یک دایره بچرخانید ‌باید از این گزینه کمک بگیرید. گزینه Transform برای تغییر زاویه و گزینه Blend برای پیچ دادن به متون شما به‌کار می‌روند.

 

ابزارهای عمومی: برخی از ابزارهای این نرم‌افزار، برای ویرایش و مدیریت انواع موضوعات کاربرد دارند. این ابزارها و روش دسترسی به آنها عبارتند از:

 

ـ افزودن تصاویر دلخواه: با استفاده از گزینه Import Custom Bitmap از منوی Object می‌توانید تصاویر موردنظرتان را از روی هارد‌دیسک رایانه خود در برنامه فراخوانی کرده تا علاوه بر تصاویر موجود در برنامه، آنها را نیز در ترکیب با دیگر موضوعات برای خلق لوگوی جدید مورد استفاده قرار دهید.

 

ـ حذف و کپی‌برداری: برای حذف یک موضوع از صفحه پروژه باید پس از کلیک روی موضوع موردنظر، گزینه Remove Object را از منوی Object کلیک کنید. (کلیدهای میان‌بر Ctrl+R)، همچنین در صورتی‌که می‌خواهید یک موضوع را کپی کنید نیز می‌توانید از گزینه Duplicate Object در همین منو کمک بگیرید. (کلیدهای میان‌بر CTRl+D)

 

ـ ترتیب قرارگیری: اعمال تغییر در ترتیب قرارگیری موضوعات روی صفحه از دیگر امکانات موردنیاز برای طراحی به‌شمار می‌رود. شما می‌توانید با استفاده از گزینه‌های Bring Closer Send Farther Bring to Front Send to Back، موضوعات مختلف را زیر و رو کنید!

 

ـ افکت انعکاس: با انتخاب هریک از موضوعات دلخواه و کلیک روی گزینه Has Reflect از منوی Object، افکت انعکاس تصویر روی موضوع انتخابی شما فعال می‌شود.

 

توجه: دسترسی به مجموعه موضوعات از پیش طراحی شده از سمت چپ نرم‌افزار امکان‌پذیر است، مجموعه‌ای از رنگ‌بندی‌های پرکاربرد را می‌توانید از بخش زیرین محیط کاربری مورد استفاده قرار دهید، در بالا ـ سمت چپ محیط کاربری کادری وجود دارد که پیش‌نمایشی از موضوعات انتخاب شده را نمایش می‌دهد. در صورتی‌که کلیک چپ ماوس خود را در این کادر نگه‌دارید و آن را به سمت چپ یا راست حرکت دهید، موضوع انتخابی شما تغییر اندازه خواهد داد، شما می‌توانید با استفاده از عملیات کشیدن و رها کردن هریک از موضوعات، آنها را روی صفحه پروژه حرکت دهید.

 

قدم پنجم ذخیره و انتشار
در پایان پس از اعمال تغییرات موردنظر و کامل شدن مرحله طراحی می‌توانید فایل پروژه مربوط را روی هارد‌دیسک رایانه ذخیره کنید تا در صورت نیاز، بتوانید به اعمال تغییرات در آن بپردازید.

 

برای انجام این کار ‌باید از منوی File، روی گزینه Save Project as کلیک کنید.
همچنین شما می‌توانید لوگوی طراحی شده در پروژه خود را برای انتشار روی صفحات وب یا چاپ روی کاغذ نیز در فرمت‌های استاندارد تصویری روی هارد‌دیسک رایانه ذخیره کنید. برای این کار گزینه‌های مختلفی از منوی فایل قابل دسترسی است که هر کدام از آنها عبارتند از:

 

ـ Save Logo Image: قابلیت ذخیره‌سازی در فرمت‌های مختلف با رزولیشن 72dpi و بزرگ‌نمایی قابل تغییر را در اختیار شما قرار می‌دهد.

 

ـ Export Logo for the web: ذخیره‌سازی در فرمت‌های مختلف با قابلیت کاهش کیفیت فایل نهایی در فرمت Jpg را در اختیار شما قرار می‌دهد. (این گزینه برای استفاده از لوگو در صفحات وب مناسب است)

 

ـ Export Logo for Printing: تعیین فرمت فایل خروجی، مدیریت کیفیت فایل خروجی، تغییر اندازه و بزرگ‌نمایی فایل خروجی به میزان دلخواه از جمله امکاناتی است که در این بخش در اختیار شما قرار می‌گیرد تا بتوانید براحتی فایل نهایی را در اندازه دلخواه ذخیره کرده و با بیشترین کیفیت ممکن آن را به چاپ برسانید. (این گزینه برای ذخیره نسخه با کیفیت لوگو برای چاپ روی بنر، سربرگ، کارت ویزیت و… کاربرد دارد)

منبع:jamejamonline.ir


افزایش امنیت فولدر آپلودها وردپرس

امنیت وردپرس

شما دوستان عزیز در این پست خواهید فهمید که چگونه می توان فایل .htaccess را به گونه ای تغییر دهیم که به افزایش امنیت فولدر آپلودها در وردپرس کمک کند و تنها فایل هایی را بپذیرد که شما از قبل برایش تعریف کرده اید.

برای انجام این کار فایلی با نام .htaccess بسازید و سپس کد زیر را در آن کپی کنید. پس از انجام این عمل، این فایل را در پوشه wp-content/uploads خود آپلود کنید.

<Files ~ ".*..*">
 Order Allow,Deny
 Deny from all
</Files>
<FilesMatch ".(jpg|jpeg|jpe|gif|png|tif|tiff)$">
 Order Deny,Allow
 Allow from all
</FilesMatch>

و اگر می خواهید فایلی با پسوند خاص را اضافه کنید باید در خط پنجم، اضافه نمایید.

برای اینکه بتوانید انواع دیگر فایلها را مجاز کنید، کافیست خط زیر را ویرایش کنید :

<FilesMatch ".(jpg|jpeg|jpe|gif|png|tif|tiff)$">
منبع:http://www.3zar.ir/

nofollowکردن لینک های خارجی داخل مطالب سایت

 nofollowکردن لینک های خارجی

کد نوفالو (nofollow) چیست؟

nofollow اضافه کردن nofollow به صورت اتوماتیک به لینک های خارجی

نوفالو (nofollow) یک کد بصورت “rel=”nofollow  است که در کد لینک های سایت شما قرار میگیرد. کد نوفالو (nofollow) به موتورهای جستجو نشان میدهد که نباید به دنبال این لینک بروند. در واقع شما با استفاده از کد نوفالو (nofollow) به موتورهای جستجو خبر میدهید که این لینک نباید در محاسبه پیج رنک شما وارد شود ولی با این کار همچنان اجازه ایندکس این صفحات را به موتورهای جستجو میدهید. البته لینک  نوفالو از صفحات شما به سایتهای دیگر در پیج رنک آنها نیز بی تاثیر خواهد بود.


سئو و بهینه سازی رایگان وردپرس

اموزش سئو و بهینه سازی رایگان وردپرس برای تمام وب مستر های ایرانی شما می توانید سوالات و نظرات خود را در همین بخش بیان کنید تا جواب داده شود امیدوارم با این مقاله که از سر تا سر وب جمع اوری شده است seo وب سایت شما خوب شود و نتیجه بدهد.

سئو وردپرس