21 ترفند وردپرس
21 ترفند وردپرس

۲۱ ترفند وردپرس

Powerful WordPress Tips And Tricks 21 ترفند وردپرس

21 ترفند وردپرس

 

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

 

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

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

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

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

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، به من گفت که وردپرس به منظور حفظ فضا و پهنای باند، برای تصاویر ارائه شده در وب سایت، کیفیت ۱۰۰٪ استفاده نمی کند. او البته به من یک راه حل نشان داد:

 

add_filter( 'jpeg_quality', 'smashing_jpeg_quality' );
function smashing_jpeg_quality() {
return 100;
}

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

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

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

 

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 در تمام صفحات، قبل از هر گونه خروجی، تنظیم کنید.

 

add_action( 'init', 'smashing_session_start' );
function smashing_session_start() {
if ( !session_id() ) {
session_start();
}
}

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

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

 

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() است.

$my_text = 'خوش آمدید!
در آقای وردپرس یک عالمه وقت و فرصت برای یادگیری وردپرس دارید';

echo wpautop( $my_text );

 

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

 

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

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

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

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

 

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

 

add_filter ("wp_mail_content_type", "smashing_mail_content_type");
function smashing_mail_content_type() {
return "text/html";
}

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

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

 

// 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>' . 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>' . paginate_links( $pagination ) . '</div>';

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

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

 

$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() را امتحان کنید.

 

$diff = human_time_diff( '2012-05-05 12:05:00', '2012-05-05 12:10:00' );
echo 'این توییت ارسال شده در ' . $diff . 'پیش';

// Output: این توییت در ۵ دقیقه پیش ارسال شده

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

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

 

$user_id = 4;
wp_set_auth_cookie( $user_id );

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

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

 

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

<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>نام کاربری شما در توییتر</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>آرس پروفایل فیس بوک</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>آدرس پروفایل کاربری در لینک دن</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() به شما اجازه می دهد که دقیقا این کار را انجام دهید.

 

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

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

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

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

add_filter( 'widget_text', 'do_shortcode' );

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

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

add_filter('request', 'smashing_custom_feed');
function smashing_custom_feed( $vars ) {
if ( isset( $vars['feed'] ) ) {
$vars['post_type'] = get_post_types();
}
return $vars;
}

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

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

 

$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 ، طبقه ی پایگاه داده های وردپرس برای کوئری کردن پایگاه داده ها به طور مستقیم، استفاده کنید.

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

 

 

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

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

// To remove revisions
define( 'WP_POST_REVISIONS', FALSE );

// To limit them
define( 'WP_POST_REVISIONS', 5 );

 

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

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

 

li.bypostauthor {
background:#fafafa;
color:#555;
}

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

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

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

 

موفق باشید . آقای وردپرس

 

 

تیم آقای وردپرس

تیم تولید محتوا و پشتیبانی سایت آقای وردپرس

این پست دارای یک نظر است

دیدگاهتان را بنویسید