Tập tin functions.php được hiểu ngầm như là một tập tin thực thi một số hàm đặc biệt thêm vào theme để có thể thêm nhiều tính năng hay hơn. Từ các bước cơ bản như tạo sidebar, menu, thêm size ảnh cho đến các bước phức tạp khác thì bạn phải làm trong tập tin functions.php này mà không thể làm ở một tập tin nào khác, nếu có thì cũng phải include vào.

Một số thủ thuật tối ưu WordPress tại functions.php

Dưới đây là một số funtions cần thiết để tối ưu WordPress hơn.

1. Đưa tất cả JavaScript xuống Footer

Mặc định các thư viện JavaScript sẽ được đặt bên trong thẻ <head></head>, để có thể đặt nó nằm ở phía dưới footer các bạn sử dụng đoạn code như sau.

/**
 * Automatically move JavaScript code to page footer, speeding up page loading time.
 */
function remove_head_scripts() {
   remove_action('wp_head', 'wp_print_scripts');
   remove_action('wp_head', 'wp_print_head_scripts', 9);
   remove_action('wp_head', 'wp_enqueue_scripts', 1);
 
   add_action('wp_footer', 'wp_print_scripts', 5);
   add_action('wp_footer', 'wp_enqueue_scripts', 5);
   add_action('wp_footer', 'wp_print_head_scripts', 5);
}
add_action('wp_enqueue_scripts', 'remove_head_scripts');

2. Tắt tính năng Emoji

Tính năng này sẽ tải thêm một script riêng cho Emoji và thế là website lại phải tốn một xíu thời gian để tải.

function disable_emojicons_tinymce($plugins) {
    if (is_array($plugins)) {
      return array_diff($plugins, array('wpemoji'));
    } else {
      return array();
    }
}

function disable_wp_emojicons() {
    remove_action('admin_print_styles', 'print_emoji_styles');
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('admin_print_scripts', 'print_emoji_detection_script');
    remove_action('wp_print_styles', 'print_emoji_styles');
    remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
    remove_filter('the_content_feed', 'wp_staticize_emoji');
    remove_filter('comment_text_rss', 'wp_staticize_emoji');
    add_filter('tiny_mce_plugins', 'disable_emojicons_tinymce');
}
add_action('init', 'disable_wp_emojicons');

3. Sử dụng jQuery từ Google Hosted Libraries

WordPress tự động tải jQuery từ thư mục wp-includes/js/jquery/jquery.js. Tuy nhiên trong một số trường hợp bạn không muốn tải từ thư mục này mà bạn muốn lấy jQuery trực tiếp từ Google Hosted Libraries thì bạn nên viết lại như thế này.

function modify_jquery() {
   if (!is_admin()) {
      wp_deregister_script('jquery');
      wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js', false, null);
      wp_enqueue_script('jquery');
   }
}
add_action('init', 'modify_jquery');

Lưu ý: Bạn có thể tùy ý thay đổi phiên bản jQuery bằng cách thay đổi đường liên kết từ Google.

4. Ẩn phiên bản WordPress

Nếu bạn thường không cập nhật hệ thống WordPress, thì các thông tin về phiên bản hệ thống bạn đang sử dụng cũng có thể mang lại những mối nguy nhất định. Thường thì các bản cập nhật chương trình ngoài việc bổ sung các tính năng mới, thì còn nhằm sửa các lỗ hổng bảo mật đã phát hiện trước đó. Bây giờ kẻ xấu biết được thông tin phiên bản WordPress của bạn thì hắn sẽ tìm danh sách các lỗ hỗng liên quan đến phiên bản đó xem có khai thác được không.

Để hạn chế rủi ro, bạn có thể thêm đoạn mã sau.

// Remove version from head
remove_action('wp_head', 'wp_generator');

// Remove version from rss
add_filter('the_generator', '__return_empty_string');

// Remove version from scripts and styles
function remove_version_scripts_styles($src) {
    if (strpos($src, 'ver=')) {
        $src = remove_query_arg('ver', $src);
    }
    return $src;
}
add_filter('style_loader_src', 'remove_version_scripts_styles', 9999);
add_filter('script_loader_src', 'remove_version_scripts_styles', 9999);

5. Vô hiệu hóa Gutenberg

Nếu bạn không sử dụng Gutenberg, thì hãy tắt nó đi để giảm thiểu sử dụng tài nguyên vô ích.

// Disable Gutenberg editor.
add_filter('use_block_editor_for_post_type', '__return_false', 10);
// Don't load Gutenberg-related stylesheets.
add_action('wp_enqueue_scripts', 'remove_block_css', 100);
function remove_block_css() {
    wp_dequeue_style('wp-block-library' ); // WordPress core
    wp_dequeue_style('wp-block-library-theme'); // WordPress core
    wp_dequeue_style('wc-block-style'); // WooCommerce
    wp_dequeue_style('storefront-gutenberg-blocks'); // Storefront theme
}

6. Vô hiệu hóa RSS Feed

Nếu bạn không cần chức năng này, hãy tắt nó đi, mình đã từng giới thiệu ở bài viết tắt RSS Feed của WordPress.

/**
 * Redirect to the homepage all users trying to access feeds.
 */
function disable_feeds() {
    wp_redirect(home_url());
    die;
}

// Disable global RSS, RDF & Atom feeds.
add_action('do_feed', 'disable_feeds', -1);
add_action('do_feed_rdf', 'disable_feeds', -1);
add_action('do_feed_rss', 'disable_feeds', -1);
add_action('do_feed_rss2', 'disable_feeds', -1);
add_action('do_feed_atom', 'disable_feeds', -1);

// Disable comment feeds.
add_action('do_feed_rss2_comments', 'disable_feeds', -1);
add_action('do_feed_atom_comments', 'disable_feeds', -1);

// Prevent feed links from being inserted in the of the page.
add_action('feed_links_show_posts_feed', '__return_false', -1);
add_action('feed_links_show_comments_feed', '__return_false', -1);
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);

7. Tắt oEmbed

oEmbed là giao thức cho phép nhúng video, hình ảnh, văn bản, v.v… từ trang A đến trang B chỉ bằng cách nhập nguồn URL. Nhưng thường rất ít khi được sử dụng.

function stop_loading_wp_embed() {
    wp_deregister_script('wp-embed');
}
add_action('init', 'stop_loading_wp_embed');

// Remove the REST API endpoint.
remove_action('rest_api_init', 'wp_oembed_register_route');

// Turn off oEmbed auto discovery.
add_filter('embed_oembed_discover', '__return_false');

// Don't filter oEmbed results.
remove_filter('oembed_dataparse', 'wp_filter_oembed_result', 10);

// Remove oEmbed discovery links.
remove_action('wp_head', 'wp_oembed_add_discovery_links');

// Remove oEmbed-specific JavaScript from the front-end and back-end.
remove_action('wp_head', 'wp_oembed_add_host_js');

8. Loại bỏ WordPress Global Styles

Loại bỏ CSS dư thừa.

/**
 * Disable Global Styles
 */
function wps_deregister_styles() {
    wp_dequeue_style('global-styles');
}
add_action('wp_enqueue_scripts', 'wps_deregister_styles', 100);

Chúc các bạn thành công!

5/5 (1 bình chọn)