۱۰ مورد از مهم ترین و کاربردی ترین فانکشن های وردپرس

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

۱۰ مورد از مهم ترین و کاربردی ترین فانکشن های وردپرس
۱۰ مورد از مهم ترین و کاربردی ترین فانکشن های وردپرس

فانکشن تغییر / افزودن گراواتار اختصاصی در وردپرس

اگر از گراواتار پیشفرض آدمک وردپرس خسته شده اید و میخواهید تصویر دیگری جایگزین آن کنید میتوانید از فانکشن زیر استفاده کنید و url تصویر خود را جایگزین https://example.com/new-gravatar.png کنید. به همین سادگی :)

add_filter( 'avatar_defaults', 'wpb_new_gravatar' );
function wpb_new_gravatar ($avatar_defaults) {
$myavatar = 'https://example.com/new-gravatar.png';
$avatar_defaults[$myavatar] = "Default Gravatar"
return $avatar_defaults;
}

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

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

function wpb_new_contactmethods( $contactmethods ) {
// Add Twitter
$contactmethods['twitter'] = 'Twitter';
//add Facebook
$contactmethods['facebook'] = 'Facebook';
return $contactmethods;
}
add_filter('user_contactmethods','wpb_new_contactmethods',10,1);

و برای نمایش آنها از کد زیر در فایل های مختلف وردپرس (برای مثال single.php) استفاده کنید:

<?php echo $curauth->twitter; ?>

فانکشن حذف جزئیات ارور های صفحه لاگین وردپرس

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

function no_wordpress_errors(){
return 'Something is wrong!';
}
add_filter( 'login_errors', 'no_wordpress_errors' );

فانکشن ساخت حساب کاربری ادمین (مدیر کل) در وردپرس

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

function wpb_admin_account(){
$user = 'Username';
$pass = 'Password';
$email = '[email protected]';
if ( !username_exists( $user )  && !email_exists( $email ) ) {
$user_id = wp_create_user( $user, $pass, $email );
$user = new WP_User( $user_id );
$user->set_role( 'administrator' );
} }
add_action('init','wpb_admin_account');

فراموش نکنید بجای Username ، Password و [email protected] میبایست مقادیر دلخواه خودتون رو قرار بدید. این مورد برای خودم کاربرد داشته.


فانکشن حذف نسخه فعلی وردپرس از لینک ها و ابزار wappalyzer

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

function scanwp_remove_wp_version() {
return '';
}
add_filter('the_generator', 'scanwp_remove_wp_version');

فانکشن امکان آپلود فایل های متفرقه در وردپرس مانند SVG ، PSD و...

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

function additional_myme_types($mime_types){
$mime_types['svg'] = 'image/svg+xml';
//Add additional mime types here
return $mime_types;
}
add_filter('upload_mimes', 'additional_myme_types', 1, 1);

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

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

// remove website field from comments
add_filter('comment_form_default_fields', 'unset_url_field');
function unset_url_field($fields){
    if(isset($fields['url']))
       unset($fields['url']);
       return $fields;
}

فانکشن محدودیت تعداد کارکتر کامنت های وردپرس

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

// Comment character limit
add_filter( 'preprocess_comment', 'wpb_preprocess_comment' );
function wpb_preprocess_comment($comment) {
    if ( strlen( $comment['comment_content'] ) > 2500 ) {
        wp_die('تعداد کارکتر دیدگاه شما بیش از ۲۵۰۰ میباشد و غیر مجاز است. لطفا آنرا کوتاه تر کنید.');
    }
if ( strlen( $comment['comment_content'] ) < 2 ) {
        wp_die('تعداد کارکتر دیدگاه شما کمتر از ۲ میباشد و غیر مجاز است. لطفا آنرا افزایش دهید.');
    }
    return $comment;
}

فانکشن حذف Ajax Call از ووکامرس و در صفحات سایت (حذف fragments)

این مورد رو سایت Gtmetrix به خیلی از وبسایت ها ایراد میگیره که میتونید توسط فانکشن زیر از ووکامرس حذفش کنید:

// Disable Ajax Call from WooCommerce on front page and posts
add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
function dequeue_woocommerce_cart_fragments() {
if (is_front_page() || is_single() ) wp_dequeue_script('wc-cart-fragments');
}

فانکشن «قیمت از - تا» در ووکامرس

اگر از محصولات متغییر در ووکامرس زیاد استفاده میکنید و میخواهید قیمت محصولات به این صورت نوشته بشه: «شروع از ۲۰۰۰ تومان تا ۴۰۰۰۰ تومان» میتونید از این فانکشن استفاده کنید:

// from to price in woocommerce
add_filter( 'woocommerce_variable_price_html', 'bbloomer_variation_price_format', 10, 2 );
function bbloomer_variation_price_format( $price, $product ) {
// 1. Get min/max regular and sale variation prices
$min_var_reg_price = $product->get_variation_regular_price( 'min', true );
$min_var_sale_price = $product->get_variation_sale_price( 'min', true );
$max_var_reg_price = $product->get_variation_regular_price( 'max', true );
$max_var_sale_price = $product->get_variation_sale_price( 'max', true ); 
// 2. New $price, unless all variations have exact same prices
if ( ! ( $min_var_reg_price == $max_var_reg_price && $min_var_sale_price == $max_var_sale_price ) ) {   
   if ( $min_var_sale_price < $min_var_reg_price ) {
      $price = sprintf( __( 'شروع از:<del>%1$s</del><ins>%2$s</ins>', 'woocommerce' ), wc_price( $min_var_reg_price ), wc_price( $min_var_sale_price ) );
   } else {
      $price = sprintf( __( 'شروع از: %1$s', 'woocommerce' ), wc_price( $min_var_reg_price ) );
   }
}
// 3. Return $price
return $price;
}