به شخصه معتقدم وب فارسی هم باید محتوا های تخصصی و مفید داشته باشه. حال در این مطلب قراره به ۱۰ تا از مهم ترین و کاربردی ترین فانکشن های وردپرس اشاره کنم؛ اگر شما هم فانکشن های کاربردی دیگری سراغ دارید در بخش کامنت ها بیان کنید. در ادامه با من، امیررضا شایسته فر همراه باشید...
اگر از گراواتار پیشفرض آدمک وردپرس خسته شده اید و میخواهید تصویر دیگری جایگزین آن کنید میتوانید از فانکشن زیر استفاده کنید و 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@domain.com'; 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@domain.com میبایست مقادیر دلخواه خودتون رو قرار بدید. این مورد برای خودم کاربرد داشته.
گاها هکر ها با یافتن باگ هایی در نسخه های مختلف وردپرس میتوانند سایت شما رو مورد حمله قرار دهند. این مورد نیز معمولا در افزونه های امنیتی رایگان یا پریمیوم وجود دارد اما باز هم میتوانید از فانکشن زیر استفاده کنید:
function scanwp_remove_wp_version() { return ''; } add_filter('the_generator', 'scanwp_remove_wp_version');
خب احتمالا میدونید که امکان آپلود فایل های متفرقه بطور مستقیم از طریق پنل وردپرس به بخش رسانه وجود ندارد. اما جای نگرانی نیست، توسط فانکشن زیر میتوانید این مورد رو هم انجام بدید :دی
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; }
این مورد رو سایت 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; }