10 قدم به سوی شخصی سازی پوسته وردپرس

5/5 - (2 امتیاز)

در این پست می‌خواهیم 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);
}
}

امیدوارم که این مطلب برایتان مفید بوده باشد.

5/5 - (2 امتیاز)

کانال تلگرام ماندگار وب

  1. حمید انوری

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

  2. جمال

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

    1. محمدمهدی جبارپور

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

      1. جمال

        سلام
        با کدی که در فایل فانکشن گذاشتم، وقتی که به فید سایت میرم میگه “هیچ فیدی موجود نیست لطفا به صفحه نخست بروید”
        ولی سرور ارور دریافت میکنم در GWT.
        اگر هم فید رو باز کنم سایت های فید خوان مطالب سایتم رو میدزدن!

          1. محمدمهدی جبارپور

            سلام دوست عزیز
            حتما مشکلی در قالب یا سایت شما وجود دارد. برای همین کدهای مربوط به این کار را از فایل functions.php قالبتان حذف کنید و به جای این کار از افزونه FD Feedburner Plugin استفاده کنید.

          2. جمال

            اگه از این افزونه به جای کد استفاده کنم سایت ها یفید خوان باز م یتونن مطالب رو کپی کنن؟

          3. محمدمهدی جبارپور

            سلام دوست عزیز
            می تونید برای جلوگیری از کپی شدن مطالب توسط سایت های فیدخوان از افزونه های زیر استفاده کنید :
            1- افزونه ضد خبرخوان
            2- افزونه no-more-frames
            3- افزونه sem-frame-buster
            و خیلی از افزونه های دیگه

          4. جمال

            ممنون از پاسخگوییتون
            از افزونه Disable Feeds دارم استفاده می کنم به جای اون کد! فعلا که ارور 500 در GWT نداشتم.

  3. امید

    با سلام
    سوال من ربطی به این مقاله نداره البته همچین بی ربط هم نیست
    من یه مشکلی دارم ، به دنبال یک افزونه یا کد هستم که نویسنده به مطلب خودش ستاره بده نه کاربران… مثلا یه مقاله بنویسه و به مقاله خودش ستاره بده و کاربران ستاره اون رو ببنین و کاربر تو ستاره دادن نقشی نداشته باشه

    باتشکر

  4. میلاد

    سلام من مورد اول را که مربوط به خلاصه میشه به function.php اضافه میکنم اما درست نمیشه میتونید بگید که مشکلش چیه ؟؟
    در ضمن اگه میشه به ایمیلم بفرستید ممنون .

  5. رضا

    سلام. در صورتیکه بخوایم لینک و لوگو وردپرس رو در صفحه ورود به صورت کامل حذف کنیم راهش چیه؟

    افزونه wp-parsidate نصب می کنیم لینک به وردپرس پارسی تغییر میکنه. چطور میشه با وجود نصب بودن این افزونه هم لینک رو حذف کرد؟

    با تشکر

    1. امیر خلجی مهر

      درود
      ساده‌ترین راه این هست که با css بخشی که میخواهید رو پنهان کنید تا نمایش داده نشه.

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

ماندگار وب - 1403