10 قدم به سوی شخصی سازی پوسته وردپرس
در این پست میخواهیم 10 کار مهمی را که باعث بهینه شدن قالب وردپرستان میشود را به شما معرفی کنیم.
یکی از ویژگیهای وردپرس، استفاده آسان و سازگاری آن برای کارهای گوناگون است.
تنها کاری که باید انجام دهید این است که فایل functions.php
قالب خود را بازکرده و کدهای زیر را به آن اضافه کنید.
فراموش نکنید که برای احتیاط، از این فایل بکآپ بگیرید.
1- محدود کردن تعداد کلمات خلاصه متن یا Excerpt
یکی از چیزهایی که میتواند قالب شما را زشت کند این است که تعداد کلمات خلاصه مطلبها که در صفحه اصلی وجود دارند محدود نشده باشند. اگر این خلاصه زیاد باشد، بیشتر سایت شما را کلمات میگیرند و به نحوی دل کاربر را میزنند.
برای اینکه بتوانید تعداد کلمات خلاصه هر مطلب را محدود کنید باید از کد زیر استفاده کنید:
add_filter('excerpt_length', 'mandegarweb_excerpt_length');
function mandegarweb_excerpt_length( $length ){
return ۱۰;
}
در اینجا ما از تابع add_filter
استفاده کردیم و بعد با تعریف یک تابع دیگر به نام mandegarweb_excerpt_length
، مقدار برگشتی آن را 10 گذاشتیم ، یعنی 10 کلمه نمایش داده شود.
2- اضافه کردن Favicon با استفاده از یک هوک وردپرس
هوکها یا قلابها به شما اجازه میدهند که که یک کد دلخواه را بدون تغییر فایلها (کدها) پیشفرض وردپرس به آن اضافه کنید. این کار باعث انعطافپذیری هرچه بیشتر وردپرس میشود. حالا شما زمانی که نیاز به تغییر چیزی داشتید فقط کافی است که یک هوک و تابع دلخواه خود را ایجاد کنید. به عنوان نمونه وقتی که شما میخواهید یک Favicon به سایت خود اضافه کنید، لازم نیست که به فایل header.php
بروید، فقط کافیست از هوک add_action
در تابع wp_head
استفاده کنید.
فایل favicon.ico حتما باید در روت سایت شما باشد.
add_action( 'wp_head', 'mandegarweb_favicon');
function mandegarweb_favicon(){
echo '<link rel="shortcut icon" href="https://mandegarweb.com/favicon.ico" type="image/x-icon">';
}
3- شناسایی مرورگر Safari در IOS
امروزه وبسایتها برای انواع مختلفی از دستگاهها یا موبایلها نسخه مخصوص به خود را دارند و از تکنولوژیهای متفاوت استفاده میکنند.
ممکن است استایلی که برای سایت خود مینویسید با یک مرورگر سازگار باشد و به خوبی در آن اجرا شود و ممکن است در یک دستگاه یا مرورگر به خوبی اجرا نشود. بعضی از استایلها در Safari به خوبی اجرا نمیشوند و باید برای Safari استایلهای جدایی بنویسید. وردپرس برای این کار راه امنی دارد و شما میتوانید به آسانی تشخیص دهید که کاربر از آیفون یا آیپد استفاده میکند.
وردپرس برای این کار متغیری به نام is_iphone
دارد. در مثال زیر با استفاده از این متغیر، ابتدا نوع دستگاه کاربر را تشخیص میدهیم، سپس استایل مخصوص به آن را به صفحه اضافه میکنیم.
add_action('wp_print_styles', 'mandegarweb_enqueue_styles');
function mandegarweb_enqueue_styles(){
global $is_iphone;
if( $is_iphone ){
wp_enqueue_style('iphone-css', get_stylesheet_directory_uri() . '/iphone.css');
}
else{
wp_enqueue_style('common-css', get_stylesheet_directory_uri() . '/common.css');
}
}
در اینجا ما از تابع پیشفرض وردپرس یعنی wp_enqueue_style
برای اضافه کردن فایل CSS
خود در عنصر head
صفحات استفاده کردیم.
4- حذف کردن عناصر اضافی از Header
وردپرس به صورت خودکار تگهایی به قسمت head صفحات شما اضافه میکند که کارآمد نیستند و بهتر است که آنها را حذف کنید.
مثلا وردپرس متا تگی به نام generator
به قسمت head
صفحات شما اضافه میکند که نشانگر نسخه وردپرس شما است. این خوب نیست که کاربران نسخه وردپرس شما را بتوانند ببینند. فراموش نکنید که همیشه وردپرس خود را بروز نگه دارید.
وردپرس تگ دیگری نیز به نام XML-RPC
ایجاد میکند.
XML-RPC چیست؟
XML-RPC
یک پروتکل فراخوانی دستورها از راه دور است. این پروتکل تا قبل از نسخه 3.5 وردپرس به دلیل مسائل امنیتی غیرفعال بود ولی در نسخه 3.5 وردپرس این پروتکل را به صورت پیشفرض فعال کرد و امکان غیرفعال سازی آن را از پنل مدیریت حذف کرد. اگر بخواهیم ساده تر این پروتکل را توضیح دهیم، با استفاده از این پروتکل شما میتوانید از طریق نرمافزارهای وبلاگ نویسی مثل Windows Live Writer در وردپرس مطلب منتشر کنید.
این قابلیت زیاد کاربری نیست و اگر میخواهید امنیت وردپرس خود را بالا ببرید بهتر است این قابلیت را غیرفعال کنید.
تگهایی که وردپرس به صورت پیشفرض تولید میکند:
<meta name="generator" content="WordPress 4.2.4">
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://example.com/xmlrpc.php?rsd">
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://example.com/wp-includes/wlwmanifest.xml">
برای اینکه تگهای بالا را از صفحات خود حذف کنید باید کدهای زیر در فایل functions.php
خود اضافه کنید:
add_filter('the_generator', create_function('', 'return "";'));
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');
با این کار تمامی تگهای اضافی که وردپرس به صورت پیشفرض میسازد از صفحات شما حذف میشوند و کاربران نمیتوانند آن ها را تماشا کنند.
برای این که بتوانید به صورت کامل XML-RPC
را غیرفعال کنید از کد زیر استفاده کنید:
add_filter('xmlrpc_enabled', '__return_false');
5- ریدایرکت فید وردپرس به فیدبرنر
این عالی است که وردپرس به طور پیشفرض فید ارائه میدهد اما اگر شما میخواهید آماری در مورد مشترکان خود داشته باشید باید از فیدبرنر یا سرویسهای مشابه آن استفاده کنید.
بعد از اضافه کردن فید سایتتان به فیدبرنر از کد زیر استفاده کنید:
add_action('template_redirect', 'mandegarweb_rss_redirect');
function mandegarweb_rss_redirect() {
if (is_feed() && !preg_match('/feedburner|feedvalidator/i', $_SERVER['HTTP_USER_AGENT'])){
header('Location: http://feeds.feedburner.com/mandegarwebcom/feed');
header('HTTP/1.1 302 Temporary Redirect');
}
}
به جای mandegarwebcom/feed ، آدرس فیدتان در فیدبرنر را بنویسید.
6- نمایش تصاویر بندانگشتی در فید سایت
برای تشویق مشترکان برای بازدید از سایتتان، به جای این که به آنها اجازه دهید فقط مطالب را در فید سایت تماشا کنند ، تصاویر بندانگشتی یا تصاویر برگزیده هر پست را هم به فید سایت اضافه کنید.
وردپرس به صورت پیشفرض تصاویر بندانگشتی را در فید سایت نمایش نمیدهد.
برای نمایش تصاویر بندانگشتی در فید سایت از کد زیر استفاده کنید :
add_filter('the_content_feed', 'mandegarweb_rss_post_thumbnail');
function mandegarweb_rss_post_thumbnail($content) {
global $post;
if(has_post_thumbnail($post->ID))
$content = '<p>' . get_the_post_thumbnail($post->ID, 'thumbnail') . '</p>' . $content;
return $content;
}
7- نمایش محتوا فقط به مشترکان RSS
برای این که مشترکان فید آر اس اس سایتتان را افزایش دهید باید برای آنها امکانات ویژهای را در نظر بگیرید.
در اینجا ما یک shortcode
جدید ایجاد میکنیم و این shortcode
، مطالب را برای کاربران عادی مخفی کرده ولی برای مشترکان فید آر اس اس نمایش میدهد.
add_shortcode('feedonly', 'mandegarweb_feedonly');
function mandegarweb_feedonly($atts, $content = null) {
if(is_feed()) return '<p>' . $content . '</p>';
else return;
}
8- نمایش محتوا فقط به کاربران لاگین شده در سایت
در بعضی مواقع شما باید محتوای سایت را فقط به کاربران وارد شده در سایت نمایش دهید. در اینجا ما یک shortcode
جدید ایجاد میکنیم و این shortcode
، مطالب را برای کاربران وارد شده در سایت نمایش میدهد و اگر کاربری در سایت وارد نشده بود پیام “لطفا برای تماشای محتوا وارد سایت شوید” برای او نمایش داده میشود.
add_shortcode('loggedin', 'mandegarweb_loggedin');
function mandegarweb_loggedin($atts, $content = null) {
if(is_user_logged_in()) return '<p>' . $content . '</p>';
else return 'لطفا برای تماشای محتوا وارد سایت شوید';
}
9- تغییر لوگو صفحه ورود به لوگو خودتان
برای این که بتوانیم لوگوی خودمان را به جای لوگوی وردپرس در صفحه ورود جایگزین کنیم باید از هوک login_head
استفاده کنیم. تمام توابعی که در صفحه ورود و در قسمت head
صفحه قرار دارند به این هوک متصل هستند.
add_action('login_head', 'mandegarweb_custom_login');
function mandegarweb_custom_login() {
echo '<style type="text/css">
h1 a {background-image:url('. get_stylesheet_directory_uri() . '/images/login-logo.png' . ') !important; margin-bottom: 10px;
padding: 20px;}
</style>';
}
فراموش نکنید که این تصویر باید در پوشه قالبتان باشد. و به جای /images/login-logo.png ، محل قرارگیری تصویر مورد نظرتان را بنویسید.
10- حذف کردن نوار مدیریت یا Admin Bar برای کاربران به غیر از مدیر سایت
به نظر من بهتر است که نوار مدیریت را برای کاربران عادی سایت غیرفعال کنید.
چون برای کاربران عادی نوار مدیریت کارآمد نیست و فقط قالبتان را زشت میکند. اما نمایش نوار مدیریت برای مدیر سایت مناسب است چون برای مدیر کارآمد است و میتواند به قابلیتهای مختلف از طریق این نوار دسترسی پیدا کند.
add_action('after_setup_theme', 'mandegarweb_remove_admin_bar');
function mandegarweb_remove_admin_bar() {
if (!current_user_can('administrator') && !is_admin()) {
show_admin_bar(false);
}
}
امیدوارم که این مطلب برایتان مفید بوده باشد.
دیدگاهها در "10 قدم به سوی شخصی سازی پوسته وردپرس"
دیدگاه خود را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.
سلام آقای محمدمهدی جبارپور
خواستم ازتون به خاطر مقاله ی خوبتان که واقعا به دردم خورد تشکر کنم .زیرا مقالات شما با زبانی ساده نوشته شده متشکرم.
سلام دوست خوبم
ممنون از لطف شما
سلام
مطلبتون عالی بود استفاده بردیم.
سلام دوست عزیز
خواهش می کنم
بسیار خوووب : )
سلام دوست عزیز
خواهش می کنم
مقاله بسیار مفیدی بود !
تشکر
سلام دوست عزیز
خواهش می کنم
سلام
من فید سایت رو به خاطر سایت های فید خوان بستم کلا و تو گوگل وبمستر م سرور ارور دریافت می کنم به خاطر بستن فید!
ب
به نظر شما چی کار باید انجام بدم؟ بستن فید به ضرر سایت هستش؟
سپاس
سلام دوست عزیز
چجوری فید سایتتان را بسته اید. با ریدایرکت ؟
اگه فید سایتتان را با آموزش بالا به فیدبرنر ریدایرکت کنید هیچ مشکلی پیش نمی آید و امکانات زیادی در فیدبرنر در اختیار شما قرار می گیرد.
سلام
با کدی که در فایل فانکشن گذاشتم، وقتی که به فید سایت میرم میگه “هیچ فیدی موجود نیست لطفا به صفحه نخست بروید”
ولی سرور ارور دریافت میکنم در GWT.
اگر هم فید رو باز کنم سایت های فید خوان مطالب سایتم رو میدزدن!
لطف می کنید راهنمایی کنید چی کار باید انجام بدم؟
سلام دوست عزیز
حتما مشکلی در قالب یا سایت شما وجود دارد. برای همین کدهای مربوط به این کار را از فایل functions.php قالبتان حذف کنید و به جای این کار از افزونه FD Feedburner Plugin استفاده کنید.
اگه از این افزونه به جای کد استفاده کنم سایت ها یفید خوان باز م یتونن مطالب رو کپی کنن؟
سلام دوست عزیز
می تونید برای جلوگیری از کپی شدن مطالب توسط سایت های فیدخوان از افزونه های زیر استفاده کنید :
1- افزونه ضد خبرخوان
2- افزونه no-more-frames
3- افزونه sem-frame-buster
و خیلی از افزونه های دیگه
ممنون از پاسخگوییتون
از افزونه Disable Feeds دارم استفاده می کنم به جای اون کد! فعلا که ارور 500 در GWT نداشتم.
سلام دوست عزیز اگر میشه منو راهنماي کنید که این کدها رو کجاقرار بدم ممنون میشم
سلام دوست عزیز
این کدها را باید در فایل functions.php قالبتان قرار دهید.
با سلام
سوال من ربطی به این مقاله نداره البته همچین بی ربط هم نیست
من یه مشکلی دارم ، به دنبال یک افزونه یا کد هستم که نویسنده به مطلب خودش ستاره بده نه کاربران… مثلا یه مقاله بنویسه و به مقاله خودش ستاره بده و کاربران ستاره اون رو ببنین و کاربر تو ستاره دادن نقشی نداشته باشه
باتشکر
سلام دوست عزیز
یکی از بهترین افزونه ها برای این کار ، افزونه Author Post Ratings است که به نویسنده مطلب اجازه می دهد که در قسمت افزودن نوشته به پست خود امتیازی از 1 تا 5 بدهد.
لینک این افزونه :
https://wordpress.org/plugins/author-post-ratings/
ممنون از مطلبی که گذاشتید خیلی مفید بود
سلام
خواهش می کنم دوست عزیز
سلام من مورد اول را که مربوط به خلاصه میشه به function.php اضافه میکنم اما درست نمیشه میتونید بگید که مشکلش چیه ؟؟
در ضمن اگه میشه به ایمیلم بفرستید ممنون .
خیلی عالی که اطلاع دادی
سلام. در صورتیکه بخوایم لینک و لوگو وردپرس رو در صفحه ورود به صورت کامل حذف کنیم راهش چیه؟
افزونه wp-parsidate نصب می کنیم لینک به وردپرس پارسی تغییر میکنه. چطور میشه با وجود نصب بودن این افزونه هم لینک رو حذف کرد؟
با تشکر
درود
سادهترین راه این هست که با css بخشی که میخواهید رو پنهان کنید تا نمایش داده نشه.