Tự code có tối ưu hơn là dùng plugin?

1 năm trước 27

Từ lúc mình tham gia vào cộng đồng WordPress cho đến nay đã phải nghe rất nhiều người nói rằng dùng nhiều plugin quá không tốt, tự code được cái nào thì hay cái nấy để tránh website thêm rề rà. Đây là tâm lý chung của hầu hết người sử dụng WordPress, nhất là những người sử dụng phổ thông. Phải, dùng nhiều plugin sẽ khiến website của bạn chậm đi nhiều hay ít tùy thuộc vào số lượng plugin đang dùng, và loại plugin đang dùng vì có rất nhiều loại plugin làm website trở nên chậm chạp.

Thế nhưng theo suy nghĩ và phân tích của mình, tự code hoặc lấy code của người khác bỏ vào website chưa chắc đã tối ưu hơn sử dụng plugin, tại sao thì trong bài này mình sẽ phân tích rõ ràng và dễ hiểu nhất cho các bạn thấy.

Hãy hiểu vai trò của plugin

id="ftoc-heading-1" class="ftwp-heading">

Plugin (dịch ra tiếng Việt là trình cắm?!) là một phương thức để WordPress được mở rộng chức năng ra mà bản thân nó không có sẵn, ví dụ plugin bán hàng WooCommerce. Vậy bạn nghĩ plugin tạo ra từ cái gì? Tất nhiên plugin được tạo ra từ code PHP được viết trong đó và nếu bạn nào đã từng sửa theme nhiều thì sẽ biết, nó hoạt động gần như giống file functions.php trong mỗi theme, nghĩa là một khi plugin kích hoạt thì các code ở bên trong plugin sẽ được tải mỗi khi khách truy cập truy cập đúng nơi mà nó cần tải.

Tự code và Plugin có khác nhau gì không?

id="ftoc-heading-2" class="ftwp-heading">

Về phương thức hoạt động, mình xin khẳng định là không vì nó chỉ đơn giản là thực thi các đoạn mã PHP mà thôi. Nếu bạn đặt một code trong file functions.php của themes và đặt một code nằm bên trong một plugin thì rõ ràng nó vẫn như nhau.

Tuy nhiên, nó sẽ có hai điểm khác nhau rõ ràng nhất đó là phải được bắt buộc khai báo thông tin plugin trong một file PHP như thế này:

/*
Plugin Name: Test Plugin
Plugin Author: ThachPham
Description: Ví dụ về một plugin WordPress
Version: 1.0
*/

Đồng thời, trong table wp_options, ở key option_name với cột active_plugins sẽ xuất hiện thêm một string trong giá trị của nó để khai báo các plugin đang được kích hoạt như thế này:

[sql]
a:31:{i:0;s:13:”AddMySite.php”;i:1;s:19:”akismet/akismet.php”;i:2;s:23:”all_in_one_seo_pack.php”;i:3;s:16:”authenticate.php”;i:4;s:28:”breadcrumb-navigation-xt.php”;i:5;s:18:”codeautoescape.php”;i:6;s:37:”contact-coldform/contact_coldform.php”;i:7;s:32:”custom-query-string-reloaded.php”;i:8;s:30:”customizable-post-listings.php”;i:9;s:33:”dd-sitemap-gen/dd-sitemap-gen.php”;i:10;s:20:”download-counter.php”;i:11;s:13:”feedcount.php”;i:12;s:13:”full_feed.php”;i:13;s:15:”get-weather.php”;i:14;s:36:”google-sitemap-generator/sitemap.php”;i:15;s:13:”gravatars.php”;i:16;s:19:”kill-admin-nags.php”;i:17;s:18:”landingsites13.php”;i:18;s:30:”nofollow-free/nofollowfree.php”;i:19;s:17:”ol_feedburner.php”;i:20;s:16:”plugins-used.php”;i:21;s:22:”popularity-contest.php”;i:22;s:39:”search-everything/search_everything.php”;i:23;s:27:”simple-tags/simple-tags.php”;i:24;s:26:”simple_recent_comments.php”;i:25;s:18:”simple_twitter.php”;i:26;s:25:”subscribe-to-comments.php”;i:27;s:24:”the-excerpt-reloaded.php”;i:28;s:18:”theme-switcher.php”;i:29;s:9:”top10.php”;i:30;s:16:”wp-db-backup.php”;}
[/sql]

Và những plugin có sử dụng các options cho phép chúng ta tùy chỉnh thì dữ liệu của nó cũng sẽ được lưu vào database ở table wp_options, nhưng nó sẽ không mất đi khi tắt plugin mà chỉ mất đi nếu ta xóa thủ công hoặc plugin đó có chức năng xóa dữ liệu trong database khi tắt đi.

Như vậy ở phần này, bạn tạm hiểu rằng cách hoạt động của plugin và code tự thêm vào file functions.php là như nhau, tuy nhiên khi dùng plugin thì nó sẽ thêm một string dữ liệu vào database để khai báo và càng sử dụng nhiều plugin thì dữ liệu này càng nhiều và qua thời gian dài nếu không được chăm sóc kỹ sẽ gây nặng database.

Nhưng tự code có thật sự tốt?

id="ftoc-heading-3" class="ftwp-heading">

Theo nhã kiến của mình, việc sử dụng code để thêm vào file functions.php trong theme để làm các tính năng mình muốn cũng tốt vì hạn chế dùng plugin sẽ tránh được chuyện nặng database mà mình đã nói ở trên. Nhưng cũng theo mình, việc sử dụng code tự thêm vào chỉ thật sự tốt nếu bạn tin chắc rằng code đó tối ưu, hiểu nó có ý nghĩa gì hoặc chỉ thích hợp làm các tính năng nhỏ. Còn đối với một số tính năng quan trọng, nhất là tính năng có sử dụng đến query như tạo bài liên quan, bài ngẫu nhiên,…thì tốt nhất nên dùng các plugin uy tín như Yet Another Related Posts chẳng hạn.

Tại sao?

id="ftoc-heading-4" class="ftwp-heading">

Bởi vì các plugin đó đã được tác giả phát triển và tối ưu theo thời gian, có thể khai thác nhiều tính năng quan trọng trong WordPress hơn để hạn chế xảy ra bug và nếu các plugin này làm việc liên quan đến Query thì rất có thể họ sẽ viết code phù hợp với Transient API để giảm thiểu khả năng bị tràn bộ nhớ do liên tục xử lý query trong database.

Về bảo mật, các plugin uy tín sẽ luôn được tác giả cập nhật thường xuyên nên nếu nó có lỗi bảo mật gì thì cũng sẽ được vá lỗi nhanh chóng, lại còn được tác giả hỗ trợ kỹ thuật qua phần Support của mỗi plugin nữa.

Vậy khi nào nên dùng code/plugin

id="ftoc-heading-5" class="ftwp-heading">

Tóm tắt lại bài, mình xin kết luận như sau để bạn có thể hiểu rõ.

Dùng plugin khi…

id="ftoc-heading-6" class="ftwp-heading">

Khi mà bạn cần triển khai  các tính năng phức tạp nhưng đã có plugin hỗ trợ sẵn, dĩ nhiên các plugin đó phải hỗ trợ phiên bản WordPress mà bạn đang dùng và được cập nhật thường xuyên thì lại càng tốt.

Dùng code khi….

id="ftoc-heading-7" class="ftwp-heading">

Khi mà bạn thật sự hiểu code đó làm gì và chắc chắn rằng nó được tối ưu với máy chủ hơn vì code có tối ưu hay không là do người viết, hãy chắc chắn rằng code đó bạn có thể sửa lại như ý muốn và dễ phát triển sau này chứ không hẳn là chỉ copy/paste.

Xóa những options của plugin không còn sử dụng

id="ftoc-heading-8" class="ftwp-heading">

Nếu bạn đã từng cài nhiều plugin rồi và cảm thấy dung lượng database của mình đã khá nặng, hãy sử dụng plugin WP Options Editor để xóa những table, những key không cần thiết của các plugin cũ trong database và mình khuyên khi vừa không còn sử dụng plugin nào nữa, hãy xóa ngay vì sau này nếu bạn đã từng cài qua nhiều plugin thì sẽ rất vất vả để xóa nó.

Hy vọng với bài ngắn này sẽ có thể giải đáp về câu hỏi khiến nhiều người hoang mang và yên tâm hơn trong việc dùng plugin của mình.

Đọc toàn bộ bài viết