Hướng dẫn dùng w3 total cache thachpham

Trong mặc định WordPress có hỗ trợ bạn một số field nhập thông tin user như Username, Last Name, First Name, Nickname, Website, Biographical,..nhưng không phải field nào cũng được hiển thị ra bên ngoài để mọi người có thể thấy.

Show

Thể theo yêu cầu, mình xin hướng dẫn bạn cách tạo một field thông tin tùy chọn cho user và lấy giá trị của field bất kỳ để hiển thị ra ngoài theme.

Cần xem trước: Hướng dẫn Filter

Trong bài này mình xin chia ra làm 3 bước chính như sau:

  1. Tạo ô nhập dữ liệu cho user và làm cho nó lưu vào database.
  2. Hiển thị ra ngoài theme với cd /usr/local/src 4, bạn vẫn có thể dùng cd /usr/local/src 5 nếu thích. Do trong bài này mình sử dụng filter để tránh đụng vào file single.php nên mình dùng get.
  3. Thêm CSS

Và từ bước 1 đến bước 3, chúng ta sẽ viết code vào file functions.php trong theme hoặc tự tạo một plugin mới.

Bước 1. Tạo ô nhập dữ liệu

Để tạo field nhập dữ liệu, chúng ta sẽ sử dụng hook

cd /usr/local/src 6 và

cd /usr/local/src 7 để có thể viết một cái form nhập thông tin ở bên dưới trang sửa thông tin user. Ta có như sau:

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu */ function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     

cd /usr/local/src 8,…

Hướng dẫn dùng w3 total cache thachpham

Nhưng cái đó chỉ là tạo thôi, chúng ta cần sử dụng thêm

cd /usr/local/src 9 để lấy giá trị nhập từ field rồi gửi đến hàm

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

00 mà lưu lại các thông tin đó. Ta viết tiếp.

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

Bây giờ bạn có thể thử nhập thông tin vào 2 field vừa tạo và ấn Save Change, nếu nó lưu lại bình thường là coi như thành công bước 1.

Bước 2. Hiển thị vào dưới nội dung bằng Filter

Để tránh tối thiểu việc sửa trực tiếp theme nên mình khuyên các bạn nên sử dụng Filter để hiển thị. Sau này có đổi theme thì chỉ cần bốc nguyên đoạn code ở trên và code này đi là oke.

Hướng dẫn dùng w3 total cache thachpham

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} Giải thích ngắn gọn là ở đoạn này chúng ta sử dụng hàm get_the_author_meta() để hiển thị thông tin của user và bên trong đó là một tham số chứa field mà bạn cần gọi ra. Nếu bạn muốn biết các tham số của những field mặc định thì có thể tham khảo bên dưới.

  • user_login
  • user_pass
  • user_nicename
  • user_email
  • user_url
  • user_registered
  • user_activation_key
  • user_status
  • display_name
  • nickname
  • first_name
  • last_name
  • description (Biographical Info from the user’s profile)
  • jabber
  • aim
  • yim
  • user_level
  • user_firstname
  • user_lastname
  • rich_editing
  • comment_shortcuts
  • admin_color
  • plugins_per_page
  • plugins_last_view
  • ID

Do bước 2 mình có sử dụng nút Follow của Facebook kết hợp với field nhập link Facebook nên ở đây mình phải thêm một đoạn script của Facebook để có thể hiển thị nó. Dùng action luôn nhé.

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

01 thành APP ID của bạn.

Bước 4. Thêm tí CSS

Để hiển thị như demo thì bạn có thể chèn thêm một vài đoạn CSS bên dưới vào file style.css

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } CSS này mình viết nhanh để làm demo nên không chắc là nó hiển thị tốt ở mọi theme đâu nên tốt nhất bạn nên sửa lại theo phù hợp với theme của mình nếu có lỗi xảy ra nhé.

Ok bây giờ ta có kết quả là:

Hướng dẫn dùng w3 total cache thachpham

Không khó phải không nào? Và đây là toàn bộ code PHP trong bài, nhắc lần nữa là bạn chèn vào file functions.php hoặc tự tạo một plugin nhé.

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

Tips: Tạo field nhanh chóng với plugin

Nếu bạn muốn tạo nhiều field nhanh chóng thì có thể sử dụng các plugin sau:

  • Extra User Fields
  • Types

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

Cách gửi code lên comment

Nếu bạn làm không được, hãy cho mình xem code của bạn. Bạn nên vào Pastebin.com và dán code của bạn vào đó, sau đó gửi link ở comment.

The post Cách tạo thêm thông tin user và hiển thị ra theme appeared first on Thach Pham Blog.


Kích hoạt các nút soạn thảo ẩn trong WordPress

April 13, 2014, 2:42 am

Trong khung soạn thảo WordPress mặc định nó chỉ hiển thị một vài nút bấm như chọn thẻ Heading, căn lề chữ, in đậm, in nghiêng, link,…nhưng bạn có thể thấy nó bị thiếu khá nhiều nút mà có thể bạn cần như kiểu font chữ, kích thước chữ,……Điều này có thể làm một vài người mới dùng WordPress không hài lòng nếu muốn bài viết trang trí độc đáo hơn.

Hướng dẫn dùng w3 total cache thachpham

Các nút bấm mặc định trong bộ soạn thảo của WordPress

Để kích hoạt các nút ẩn đó, bạn có thể dùng các plugin hỗ trợ thêm nhiều nút bấm khác như Advanced TinyMCE là một ví dụ, nhưng có lẽ sử dụng plugin không phải là lựa chọn tốt cho nhiều người.

Vậy chúng ta có thể thêm các nút mới vào khung soạn thảo WordPress mà không cần dùng plugin không? Hoàn toàn có thể.

Bộ soạn thảo Visual của WordPress sử dụng thư viện mở TinyMCE, thư viện này hỗ trợ rất nhiều nút bấm rất chuyên nghiệp nhưng để cho người dùng dễ tiếp cận, không bị rối nên WordPress đã cố tính giấu chúng đi và những lập trình viên có thể tìm cách cho nó hiển thị nếu cần.

Để kích hoạt các nút ẩn, bạn chỉ cần chèn đoạn sau vào file functions.php trong theme:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); Nếu bạn muốn các nút nó xuống hàng, thì hãy thay hook

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

02 thành

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

03 hoặc

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

04 hoặc

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

05.

Khi thêm xong, bạn sẽ thấy khung soạn thảo trở thành như thế này:

Hướng dẫn dùng w3 total cache thachpham

Quá dễ dàng và đơn giản phải không nào, bây giờ bạn có thể tha hồ soạn bài viết với các công cụ đầy đủ hơn mà không cần cài plugin.

Bài viết Kích hoạt các nút soạn thảo ẩn trong WordPress được giữ bản quyền bởi Thach Pham

Quản lý nhiều website WordPress miễn phí với InfiniteWP

April 22, 2014, 4:00 pm

Trước kia mình đã từng giới thiệu qua dịch vụ ManageWP như một giải pháp quản lý nhiều website WordPress trên một địa chỉ duy nhất rất chuyên nghiệp và dễ sử dụng. Đặc điểm của ManageWP là bảo mật tốt, nhiều tính năng tiện ích, không cần host để cài đặt vì nó là một dịch vụ riêng. Tuy nhiên nhược điểm là phải bỏ tiền duy trì hàng tháng và giới hạn website thêm vào.

Nhưng sau đó không lâu, mình cũng đã tìm thấy một giải pháp khác có chức năng tương tự như ManageWP đó là mã nguồn InfiniteWP. Mã nguồn này sẽ giúp bạn tự cài một trình quản lý nhiều website WordPress cùng lúc và bạn có thể cài nó lên hosting riêng của mình, hoàn toàn miễn phí và chức năng đi kèm không thua kém gì ManageWP.

Hướng dẫn dùng w3 total cache thachpham

Đặc điểm của InfiniteWP

  • Dễ cài đặt.
  • Yêu cầu cấu hình hosting không quá khó, hầu như bạn có thể cài tốt với các share host quốc tế hiện nay.
  • Mã nguồn khá nhẹ.
  • Có nhiều addon (100% trả phí) kèm theo nếu bạn muốn nó chuyên nghiệp hơn. Xem tại đây.
  • Có đầy đủ hướng dẫn tại đây.
  • Có cả forum hỗ trợ tại đây.

Các tính năng có sẵn của InfiniteWP

  • Thêm website quản lý không giới hạn.
  • Truy cập vào Dashboard của website cần quản lý.
  • Quản lý nhiều cửa sổ website dựa vào tabs.
  • Quản lý website theo group.
  • Backup website thủ công.
  • Viết bài đăng lên website.
  • Thông báo cập nhật WordPress, Plugin và Theme.

Cơ chế làm việc của InfiniteWP

Cũng giống như ManageWP, cơ chế làm việc của InfiniteWP là quản lý website thông qua một Secret Key, key này sẽ được tạo ra khi website cần quản lý cài plugin InfiniteWP Client vào. Ở key này, tài khoản của bạn tại InfiniteWP sẽ có toàn quyền quản trị như một admin thật sự.

Hướng dẫn sử dụng InfiniteWP

Do cách cài đặt InfiniteWP rất dễ, dễ như bạn cài WordPress nên mình sẽ không hướng dẫn dài dòng ra đây. Bạn có thể truy cập vào trang hướng dẫn InfiniteWP để xem cách cài đặt và thiết lập, cũng như cách sử dụng chi tiết từng chức năng của mã nguồn này.

Hướng dẫn dùng w3 total cache thachpham

Một lưu ý khi cài InfiniteWP là chỉ nên cài vào hosting sử dụng Apache hoặc bạn phải chắc chắn là biết cách cấu hình phù hợp cho máy chủ của mình để hoạt động tốt với nó, nhất là chức năng Cron Job. Nếu bạn không dùng máy chủ riêng mà chỉ dùng host thông thường thì hầu như bạn có thể cài đặt hoàn toàn tốt, mình khuyến khích bạn sử dụng host quốc tế tại đây để có cấu hình tốt nhất.

Hiện tại mình đang chạy mã nguồn InfiniteWP trên hosting tại InterServer (dùng mã THACHPHAM để giảm còn $0,01 cho tháng đầu tiên), phải nói là rất mượt và hầu như chưa bao giờ gặp vấn đề gì.

Hướng dẫn dùng w3 total cache thachpham

Lời kết

Đây là một công cụ mà theo mình nó rất tiềm năng và sẽ phát triển mạnh mẽ hơn nữa trong thời gian tới. Hiện tại mình đang dùng nó để quản lý 1 ít website WordPress của khách hàng trên đây và thấy vô cùng tốt và tiện lợi. Các addon trả phí mặc dù giá hơi cao nhưng tính chung là bạn chỉ mua một lần là có thể sử dụng cho nhiều website nên cũng rất đáng đồng tiền bát gạo.

Bạn thấy sao về công cụ này?

Bài viết Quản lý nhiều website WordPress miễn phí với InfiniteWP được giữ bản quyền bởi Thach Pham

Centminmod & WordPress [Phần 2] – Cài đặt Centminmod

April 27, 2014, 5:21 am

Ở trong bài giới thiệu bạn đã biết qua Centminmod là gì và vai trò của nó cũng như tại sao mình lại chọn Centminmod để hướng dẫn cho mọi người. Vậy thì chắc bạn cũng tò mò muốn đi sâu vào nó để tiến hành triển khai cho dự án của mình rồi phải không nào.

Trong bài này, mình sẽ nói qua chi tiết cách cài đặt script Centminmod vào VPS, cực kỳ ngắn gọn và dễ hiểu.

Chuẩn bị VPS

Mình xin nhắc lại, để theo serie này bạn cần thông tin VPS như sau:

  • IP của VPS
  • Mật khẩu với username là root
  • VPS chỉ được cài CentOS, chưa được cài gì cả.

Bạn có thể mua VPS nguyên xi chưa được cài gì tại Interserver hoặc DigitalOcean. Riêng VPS tại CloudZin mà mình đang sử dụng cho Thachpham.com thì bạn không cần cài Centminmod nữa vì nó đã có một script y hệt Centminmod bằng tiếng Việt.

Cài đặt Centminmod

Bạn vui lòng làm theo các bước sau:

Bước 1. Đăng nhập vào VPS thông qua SSH bằng phần mềm PuTTY (Windows) hoặc Terminal (OS X/Ubuntu).

Sau khi đăng nhập xong thì bạn sẽ thấy như thế này:

Hướng dẫn dùng w3 total cache thachpham

Ngay tại dòng đó bạn có thể gõ các dòng lệnh của UNIX vào.

Việc đầu tiên mà bạn nên làm sau khi đăng nhập vào SSH của VPS lần đầu tiên là thay đổi mật khẩu của root do mật khẩu mặc định thường hơi khó nhớ. Nếu bạn muốn đổi thì gõ lệnh dưới đây vào:

passwd root Sau đó bạn gõ mật khẩu mới (không hiển thị ra) rồi Enter, sau đó gõ lại một lần nữa.

Hướng dẫn dùng w3 total cache thachpham

Kể từ bây giờ khi đăng nhập vào SSH, bạn sử dụng mật khẩu mới nhé.

Bước 2. Cài đặt module cần thiết

Đối với VPS chưa cài gì cả, đầu tiên bạn cài 2 cái module cần thiết đó là wget và unzip bằng lệnh dưới đây nhé.

yum install wget unzip -y Nó sẽ tự động cài cho bạn, không cần làm gì cả. Hình ảnh sau khi cài xong:

Hướng dẫn dùng w3 total cache thachpham

Bước 3. Cài đặt Centminmod

Đầu tiên bạn cần truy cập vào thư mục /usr/local/src, đây là sẽ là thư mục bạn lưu file cài đặt của centminmod. Gõ lệnh dưới đây vào.

cd /usr/local/src Sau đó gõ tiếp lệnh wget để tải file cài đặt của Centminmod về VPS, nó sẽ tải về thư mục mà bạn vừa truy cập:

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

0

Lưu ý rằng, tại thời điểm này là phiên bản Centminmod v.1.2.3-eva2000.06. Tốt nhất bạn nên vào đây để lấy link phiên bản mới nhất của nó và thay vào lệnh bên trên.

Hướng dẫn dùng w3 total cache thachpham

Hình ảnh sau khi tiến hành wget

Giờ thì thư mục /usr/local/src của bạn đã có file cài đặt .zip của Centminmod, hãy thử chạy lệnh ls xem có nó không đã nhé, tiện thể bạn cũng cần biết chính xác tên file để tí nữa giải nén ra.

Hướng dẫn dùng w3 total cache thachpham

Bây giờ gõ tiếp lệnh dưới để tiến hành giải nén nhé.

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

1

Nhớ thay tên file centmin-v1.2.3-eva2000.06.zip thành đúng với tên file mà bạn đang có trên VPS.

Giải nén xong, bạn truy cập vào thư mục vừa được giải nén, tên thư mục giống với tên file nhưng không có .zip nhé.

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

2

Sau đó gõ lệnh

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

06 ra bạn sẽ thấy ngay các file cài đặt của Centminmod.

Hướng dẫn dùng w3 total cache thachpham

Các file và thư mục trong thư mục cài đặt Centminmod

Bây giờ chúng ta sẽ tiến hành cấp quyền cho file centmin.sh để chúng ta có thể thực thi nó bằng lệnh dưới đây.

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

3

Sẽ không có thông báo gì sau khi làm bước này đâu nhé.

Tiếp tục gõ lần lượt 2 lệnh dưới đây vào để cập nhật lại package, sẽ có 1 tí thông báo hiển thị ra thôi:

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

4

Coi như đã xong bước cài đặt, bây giờ chỉ cần chạy file centmin.sh để tiến hành mở menu của script Centminmod thôi nhé.

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

5

Lưu ý rằng để chạy được file này, bạn cần cd vào thư mục Centminmod trước mà ta đã làm ở các bước trên. Sau khi chạy thì menu Centminmod sẽ hiển thị ra thế này:

Hướng dẫn dùng w3 total cache thachpham

Cách sử dụng là gõ số thứ tự của chức năng mà bạn muốn thực thi. Nếu bạn chưa hiểu rõ về nó thì tốt nhất chỉ làm theo bài này.

Ở đây bạn sẽ cần gõ số 1 và Enter, tức là tùy chọn cài đặt mới toàn bộ như NGINX, PHP-FPM, MariaDB, APC Cache,…để tiến hành chạy website trên VPS.

Sau khi gõ xong, bạn cần chờ nó thiết lập cho bạn, bước chờ này khoảng 15 – 20 phút. Nói trước là một tí nữa sẽ có một vài bước cần bạn nhập 1 số thông tin, nên đừng Enter hay nhập cái gì nếu bạn không biết về nó mà chỉ cần làm theo hướng dẫn. Nó có hiển thị hay chạy cái gì cũng kệ nó, trừ khi nó trở lại giao diện nhập lệnh mới đáng quan tâm.

Nếu bạn có thấy hiển thị các lỗi kiểu như Failed to set locale, Error no matching Package to listing thì kệ nó. Hình như chỉ xảy ra với Mac OS X.

Hướng dẫn dùng w3 total cache thachpham

Quá trình cài đặt tùy chọn

1 của Centminmod

Chạy được tầm 20p, bạn sẽ thấy nó hiển thị cái chỗ này.

Hướng dẫn dùng w3 total cache thachpham

Ý nó hỏi là bạn nhập mật khẩu root của MariaDB vào. Mà bạn đã cài MariaDB đâu mà có pass phải không, thế thì bỏ trống và ấn Enter. Sau đó nó sẽ hỏi có muốn đặt mật khẩu root của MariaDB không, gõ Y và ấn Enter. Cuối cùng là nhập mật khẩu cần thiết lập cho MariaDB. Mật khẩu này rất quan trọng vì sau này mỗi lần bạn tạo database hay làm việc với database đều sử dụng nó.

Tiếp tục nó sẽ đưa ra 1 số tùy chọn Yes/No. Bạn cứ gõ Y và ấn Enter hết.

Enter current password for root (enter for none):

OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.

Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. … Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.

Remove anonymous users? [Y/n] y … Success!

Normally, root should only be allowed to connect from ‘localhost’. This ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y … Success!

By default, MariaDB comes with a database named ‘test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.

Remove test database and access to it? [Y/n] y - Dropping test database… … Success! - Removing privileges on test database… … Success!

Reloading the privilege tables will ensure that all changes made so far will take effect immediately.

Reload privilege tables now? [Y/n] y … Success!

Tiếp theo là nó cần bạn thiết lập username & password cho Memcached để quản lý nó, cứ đặt và ấn Enter. Username này sẽ đăng nhập vào UI của Memcached mà xem thống kê cũng như xóa cache, quan trọng đấy nhé.

Hướng dẫn dùng w3 total cache thachpham

Sau đó bạn sẽ cần đợi tiếp.

Và sau đây là thông báo hiển thị khi hoàn tất cài đặt tùy chọn

1 của Centminmod.

Hướng dẫn dùng w3 total cache thachpham

Để kiểm tra, hãy truy cập vào IP của VPS xem nó có hiển thị nội dung NGINX Test Page chưa nhé. Nếu có rồi thì đã thành công.

Kết thúc phần 2

Ở phần này bạn đã biết cách tải Centminmod về VPS và cài đặt máy chủ web (webserver) bằng NGINX cùng 1 số module khác với tùy chọn tự động cài đặt của Centminmod.

Tiếp tục ở bài sau, mình sẽ hướng dẫn bạn cách thêm domain vào VPS với Centminmod và cài mới một trang WordPress ở VPS bằng WP CLI trong Centminmod.

Bài viết Centminmod & WordPress [Phần 2] – Cài đặt Centminmod được giữ bản quyền bởi Thach Pham

Centminmod & WordPress [Phần 3]: Thêm domain vào VPS

April 27, 2014, 6:41 am

Sau khi cài đặt Centminmod mà mình đã trình bày ở phần 2, thì việc tiếp theo mà bạn cần sẽ làm đó chính là thêm domain cần chạy website vào VPS bởi các bước cài đặt Centminmod đã cấu hình tất cả cho bạn rồi nên chẳng cần làm thêm gì.

Thông thường khi thêm một domain vào VPS thì chúng ta sẽ cần làm khá mất thời gian, nhất là việc chỉnh sửa các file .conf không phù hợp dành cho người mới tìm hiểu.

Rất may mắn rằng Centminmod đã có một tùy chọn hỗ trợ bạn thêm domain nhanh chóng mà không cần làm gì nhiều, chỉ việc nhập domain là xong.

Không liên quan

Vừa nghe nhạc vừa làm cho nó khí thế nào

Hướng dẫn dùng w3 total cache thachpham
, nhạc hơi lạ tai tí nhưng mình viết bài này với thời gian bằng một bài này.

https://www.youtube.com/watch?v=qL3agpL3KdU

Bước 1. Trỏ domain về IP của VPS

Để chạy domain được trên VPS thì dĩ nhiên bạn sẽ cần phải trỏ domain về IP của VPS. Cách trỏ là chúng ta sẽ sử dụng trang quản lý DNS của các nhà cung cấp domain thường có sẵn để thêm record.

Hãy tạo một record A với tên là @ hoặc * hoặc domaincuaban.com và giá trị là IP của VPS, xem hình dưới:

Hướng dẫn dùng w3 total cache thachpham

Sửa record A trỏ tới IP của VPS

Xong và đợi đến khi nào gõ địa chỉ website mà nó dẫn tới trang NGINX Test Page của bạn trên VPS là đã cập nhật DNS hoàn tất.

Bước 2. Thêm domain vào VPS bằng Centminmod

Tiến hành đăng nhập vào VPS thông qua SSH như thường lệ và cd tới thư mục usr/local/src nhé.

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

6

Và gõ lệnh ls để biết tên thư mục Centminmod

Hướng dẫn dùng w3 total cache thachpham
. Sau đó gõ tiếp lệnh truy cập vào thư mục của Centminmod, ví dụ:

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

7

Và chạy file centmin.sh

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

8

Menu của Centminmod hiển thị ra, chọn tùy chọn số 2). Add nginx vhost domain. Tức là gõ số 2 rồi ấn Enter đó.

Hướng dẫn dùng w3 total cache thachpham

Kế tiếp, gõ tên miền cần add vào VPS (không có www).

Hướng dẫn dùng w3 total cache thachpham

Gõ tên miền cần add vào VPS

Sau đó truy cập lại vào domain, nếu nó ra trang này thì đã thành công.

Hướng dẫn dùng w3 total cache thachpham

Và giờ đây, thư mục của domain bạn vừa add vào nằm ở /home/nginx/domains/domain.com/public

Kết thúc phần 3

Ở phần này bạn đã đi qua cách add domain vào VPS bằng Centminmod, rất đơn giản và dễ hiểu lắm phải không nào. Ngay phần kế tiếp, mình sẽ hướng dẫn bạn cài mới một website WordPress trên VPS với WP CLI.

Nếu bạn đã có website rồi và cần chuyển host thì đừng lo lắng, mình sẽ hướng dẫn chi tiết ở các phần sau nữa.

Bài viết Centminmod & WordPress [Phần 3]: Thêm domain vào VPS được giữ bản quyền bởi Thach Pham

Centminmod & WordPress [Phần 4]: Cài mới một trang WordPress

April 27, 2014, 10:39 pm

Đã thêm domain vào VPS rồi thì chắc chắn bây giờ bạn chỉ cần cài WordPress lên domain này phải không nè

Hướng dẫn dùng w3 total cache thachpham

Trong phần đầu mình đã nói, ở đây là VPS nên mình sẽ không cài WordPress như cách thủ công được vì nó hơi mất thời gian. Do đó mình sẽ hướng dẫn bạn cài và làm quen với script WP-CLI luôn.

Về chi tiết script WP-CLI, mình đã có hướng dẫn tại đây, bạn có thể đọc qua để hiểu thêm về nó. Ở đây mình chỉ đi qua cách cài WordPress trên WP-CLI.

Bước 1. Tạo database

Giống như thường lệ, ta cần phải có một database trước khi cài WordPress nhé.

Đầu tiên bạn chạy lệnh sau trong SSH để đăng nhập vào MariaDB của VPS nhé.

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

9

Sau đó nhập mật khẩu root của MariaDB vào, chính là cái mật khẩu mà bạn đã làm trong bước cài đặt Centminmod đó nhé. Dưới đây là hình ảnh sau khi đăng nhập vào MariaDB.

Hướng dẫn dùng w3 total cache thachpham

Và bây giờ là bắt đầu gõ lệnh để tạo database nè. Các lệnh luôn kết thúc bằng dấu chấm phẩy (;) và Enter nhé.

Tạo một database mang tên wordpress, bạn có thể đổi lại thành tên database mà bạn cần tạo:

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 0

Và dòng thông báo như sau hiển thị ra là thành công:

Hướng dẫn dùng w3 total cache thachpham

Tiếp tục, bạn cần tạo thêm một database user tên là wordpressuser:

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 1

Tiếp đến là đặt mật khẩu cho user này:

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 2

Và cuối cùng là cấp quyền cho user wordpressuser truy cập vào database wordpress đã tạo.

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 3

Và cuối cùng là chạy tiếp lệnh dưới đây để hoàn tất:

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 4

Rồi, gõ

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

07 để thoát ra khỏi MariaDB.

Như vậy là bây giờ mình có một database với thông tin sau:

  • Database Name: wordpress
  • Database User: wordpressuser
  • Database Password: 123456
  • Database Host: localhost

Bước 2. Cài đặt WordPress bằng WP-CLI

Bây giờ bạn hãy gõ cd để được đưa về thư mục root của VPS nhé. Sau đó tiến hành lần lượt gõ các lệnh sau:

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 5

Sau đó tiến hành cd vào thư mục public của domain bạn cần cài. Ở Centminmod, tất cả các domain sẽ được lưu vào thư mục /home/nginx/domains. Do vậy, mình có domain wpsharevn.com đã thêm vào VPS thì sẽ cd với thư mục là:

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 6

Sau đó gõ lệnh dưới để tải source WordPress về thư mục đang truy cập:

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 7

Tiếp theo nữa là chạy lệnh bên dưới để thêm thông tin database đã tạo ở bước 1 vào file wp-config.php mà cài đặt:

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 8

Đừng quên sửa lại các thông tin database thành của bạn nhé.

Cuối cùng là chạy lệnh dưới để tiến hành cài đặt:

/ Hiển thị field dưới mỗi bài viết / add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {

$user_field ='  
'.get_avatar( get_the_author_meta('ID'), 85 ) .'
'.get_the_author_meta('description').'
  • Địa chỉ: '.get_the_author_meta('diachi').'
'; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
} 9

Cũng đừng quên sửa lại thông tin mà bạn muốn.

Xong, bây giờ coi như bạn đã có một website WordPress rồi nhé. Đừng quên xem kỹ bài Hướng dẫn WP-CLI của mình để biết rõ hơn về script hữu dụng này.

Bước 3. CHOWN thư mục WordPress

Mỗi lần cài mới WordPress, bạn cần phải CHOWN thư mục WordPress một lần để nó có thể tự tạo folder khi cài theme/plugin và có thể upload ảnh. Bạn chạy lệnh dưới đây vào:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Sửa domain.com thành domain của bạn trên VPS.

Bước 4. Fix lỗi hỏi FTP/sFTP khi cài theme/plugin

Sau khi cài xong, nếu bạn cài plugin và theme vào thì nó sẽ hỏi tài khoản FTP/sFTP của bạn. Để tắt chức năng này, bạn truy cập vào VPS thông qua giao thức sFTP (đăng nhập bằng tài khoản root).

Ở Windows, bạn có thể dùng phần mềm WinSCP để hỗ trợ đăng nhập sFTP và cách sử dụng cũng y hệt như FTP mà thôi. Còn ở Mac, bạn có thể dùng CyberDuck.

Khi lần đầu tiên đăng nhập vào sFTP, nó sẽ đưa bạn về thư mục /root. Do đó, hãy bấm nút Back trên thanh điều hướng để trở về thư mục gốc (/). Các bạn tìm đến thư mục /home/nginx/domains/domain.com/public và mở file wp-config.php ra và thêm đoạn dưới đây vào:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Hướng dẫn dùng w3 total cache thachpham

Lưu lại và thử vào cài plugin xem còn hỏi FTP không nhé.

Hướng dẫn dùng w3 total cache thachpham

Kết thúc phần 4

Ở phần này bạn đã biết cách tạo database trên VPS và cách cài đặt một trang WordPress mới tinh trên VPS sử dụng WP-CLI rồi đúng không nè.

Và dĩ nhiên ở bước sau, mình sẽ hướng dẫn cho bạn cách tối ưu NGINX cho việc chạy WordPress trên Centminmod.

Bài viết Centminmod & WordPress [Phần 4]: Cài mới một trang WordPress được giữ bản quyền bởi Thach Pham

Centminmod & WordPress [Phần 5]: Thiết lập NGINX cho WordPress

April 27, 2014, 11:09 pm

Sau khi cài WordPress trên VPS NGINX thì có thể bạn sẽ gặp vấn đề khi sử dụng permalink, đó là các link đều chuyển sang lỗi 404 không tìm thấy phải không nào.

Không giống như Apache, mặc định WordPress không tự thiết lập cho NGINX, bao gồm thiết lập rewrite đường dẫn nên sẽ xảy ra lỗi 404 khi dùng permalink. Trong khuôn khổ bài này, mình sẽ hướng dẫn bạn thiết lập NGINX căn bản dành cho WordPress, bao gồm các thiết lập bắt buộc và thiết lập cache.

1. Thiết lập NGINX cơ bản

Ở phần này chúng ta sẽ fix lỗi rewrite đường dẫn của WordPress. Lưu ý là ở một số bước tạo file .conf thì chúng ta chỉ làm một lần, sau này nếu có add thêm domain vào VPS thì bạn chỉ cần include file config đó vào file config của domain mà thôi, rất tiện lợi.

Hãy sử dụng WinSCP hoặc CyberDuck để đăng nhập vào VPS thông qua giao thức sFTP, giao thức này chúng ta sẽ sử dụng tài khoản root của VPS.

Sau đó tìm đến thư mục /usr/local/nginx/conf/conf.d

Ở thư mục này, bạn sẽ thấy có 1 file tên là domain.com.conf, trong đó domain.com là địa chỉ website mà bạn đã thêm vào VPS. Khi mở ra thì nội dung file đó sẽ như thế này:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Ngay tại dòng # ngx_pagespeed & ngx_pagespeed handler, bạn viết vào bên trên nó như sau:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Hướng dẫn dùng w3 total cache thachpham

Đồng thời xóa luôn đoạn này trong file:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Sau đó, quay trở lại thư mục /usr/local/nginx/conf và tạo thêm một thư mục tên là wordpress.

Hướng dẫn dùng w3 total cache thachpham

Sau đó tạo một file mang tên general.conf trong thư mục wordpress với nội dung như sau:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Sau đó tiến hành vào SSH và gõ lệnh sau để khởi động lại NGINX:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Cuối cùng là vào WordPress -> Settings -> Permalink và thiết lập cấu trúc đường dẫn cho mình thôi.

Hướng dẫn dùng w3 total cache thachpham

Cách sử dụng sau này

Chỉ cần làm lại bước include file general.conf vào file config của domain trên VPS mà bạn làm ở bước đầu tiên là được.

2. Kích hoạt APC Opcode

Về lợi ích của APC Opcode Cache mình đã có nói tại đây. Với một tính năng hữu ích như thế này, không có lý do nào mà Centminmod không tích hợp vào script của họ cả.

Đầu tiên bạn mở SSH lên, và chạy menu của Centminmod:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Sau đó chọn tùy chọn số 9 và ấn Enter là xong.

Bây giờ APC đã có trong VPS, chỉ việc chỉ định cho WordPress sử dụng cache từ APC mà thôi. Nhưng bước này chúng ta sẽ làm ở phần 3 với W3 Total Cache nhé.

3. Cài đặt W3 Total Cache tối ưu

Lại vào sFTP, vào thư mục /usr/local/nginx/conf/wordpress và tạo một thư mục tên w3total.conf với nội dung như sau:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Sau đó, mở file domain.com.conf trong thư mục conf.d lên và sửa như sau:

Hướng dẫn dùng w3 total cache thachpham

Nghĩa là bạn sẽ không sử dụng file general.conf (thêm dấu # vào trước) nữa mà sẽ sử dụng file w3total.conf.

Bây giờ vào lại SSH và khởi động lại NGINX:

add_action('wp_footer', 'tp_footer_scripts'); function tp_footer_scripts() {?> Facebook Script>

Tiếp tục vào WordPress cài plugin W3 Total Cache vào và thiết lập tại tab General như sau:

Page Cache:

  • Enable
  • Basic

Minify:

  • Enable
  • Auto
  • Disk
  • Default
  • Default

Database Cache: Để nguyên, không dùng.

Object Cache:

  • Enable
  • APC

Còn lại để nguyên hết nhé.

Ấn vào nút Save All Settings bất kỳ và ra ngoài trang chủ xem kết quả, nếu nó vẫn truy cập được vào site bình thường thì làm thành công, thử vào các bài viết nếu vẫn vào được thì thành công. Lưu ý lần đầu tiên load hơi lâu nếu bạn có ít RAM do nó phải lưu cache trước.

Về việc ở phần Page Cache mình chọn Basic mà không chọn Disk là vì mình cấu hình mãi mà nó không rewrite đường dẫn W3 Total Cache ở NGINX được nên dành sử dụng cái Basic

Hướng dẫn dùng w3 total cache thachpham

4. KÍch hoạt ngx_pagespeed

Cái này không bắt buộc, bạn làm cũng được. Làm thì tối ưu tốc độ hơn tí nhưng hơi phiền phức cho mấy bạn thích sửa CSS hay Javascript vì nó cache file tĩnh lại mà muốn xóa cache phải sử dụng lệnh trong SSH.

Các bạn vào thư mục /usr/local/nginx/conf/conf.d và mở file cấu hình của domain cần kích hoạt lên rồi tìm đoạn dưới đây

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 0

Xóa đi 3 dấu # ở cuối đi ta có:

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 1

Chạy thêm lệnh sau ở SSH:

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 2

Và cuối cùng là khởi động NGINX

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 3

Ok, bây giờ hãy vào website và kiểm tra source xem các file JS, CSS nó được nén lại chưa nhé.

Cách xóa cache ngx_pagespeed

Chỉ cần gõ lệnh sau vào SSH là được.

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 4

5. Đổi đường dẫn đăng nhập admin trên NGINX

Mở file domain.com.conf ra và chèn đoạn dưới đây ngay bên trên # ngx_pagespeed & ngx_pagespeed handler

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 5

Thay chữ dangnhap thành slug mà bạn cần đổi để thay cho /wp-admin.

Kết thúc phần 5

Phần này có lẽ hơi dài vì có quá nhiều điều cần thiết lập, nhưng mình đảm bảo rằng các thiết lập trên sẽ giúp website WordPress của bạn chạy khá tối ưu trên VPS mặc dù mình hơi thất bại trong việc thiết lập cache dạng Disk cho W3 Total Cache ở NGINX nhưng nếu VPS bạn có hơn 1GB RAM, việc lưu cache vào file PHP để APC nó xử lý cũng là một hướng khá hiệu quả.

Trong phần kế tiếp, mình sẽ hướng dẫn bạn đưa một website từ host khác về VPS sử dụng Centminmod.

Bài viết Centminmod & WordPress [Phần 5]: Thiết lập NGINX cho WordPress được giữ bản quyền bởi Thach Pham

Các mẹo hay cho WordPress

1

May 1, 2014, 12:15 am

Trong khi làm việc với WordPress, ngoài việc sử dụng theme và plugin để tùy chỉnh website của mình thì còn một việc mà những người sử dụng WordPress nâng cao hay làm nữa đó là viết code tùy chỉnh dựa vào hai tính năng action & filter trong WordPress.

Hai tính năng này có thể giúp người dùng trực tiếp can thiệp vào mã nguồn của WordPress mà không cần sửa trực tiếp, để tránh các nguy cơ bị lỗi nghiêm trọng hoặc không bị mất đi khi tiến hành cập nhật WordPress.

Trong bài này, mình sẽ giới thiệu qua một vài đoạn code khá hay để bạn có thể sử dụng, đa phần là copy vào file functions.php trong theme bạn đang sử dụng.

Tự chuyển hướng sau khi đăng ký

Code này sẽ giúp người dùng chuyển hướng đến một trang nhất định sau khi họ đăng ký thành công thay vì trở lại trang đăng nhập như mặc định.

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 6

Trong đó, bạn thay chữ member thành slug của page mà bạn cần chuyển tới.

Hiển thị số lượng post của custom post type ra Dashboard

Hiện tại khi bạn ra trang Dashboard của trang quản trị, bạn sẽ thấy phần tên là At a Glance, ở đó sẽ hiển thị số lượng post và page hiện có. Nếu bạn muốn thêm dòng hiển thị số lượng post trong một post type nào đó thì có thể sử dụng code dưới đây.

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 7

Trong đó, post_type_1 và post_type_2 là slug của post type mà bạn cần hiển thị ra.

Chuyển sang trang kế tiếp bằng bàn phím

Đây không phải là code PHP mà là jQuery, bạn sẽ cần chèn vào một file JS nào đó trong theme.

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 8

Trong đó, 37 và 39 là số thứ tự của bàn phím. Để xem số của từng phím, bạn có thể vào đây.

Mặc định RSS Feed chỉ lấy nội dung và tiêu đề của bài viết. Nếu bài của bạn có featured image nhưng nó không hiển thị ra ngoài thì RSS cũng không hiển thị, chèn code dưới đây vào để khắc phục điều đó.

.tp_user_field { overflow: hidden; border: 1px solid

E8E8E8;

padding: 1em; width: 90%; margin: 0 auto; background:

F7F7F7;

-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; margin-bottom: 1em; } .tp_user_field:after { clear: both } .tp_user_field .avatar img { float: left; margin-right: 2em; } .tp_user_field .info { float: right; width: 72%; } 9

Đối với một số blog có nhiều tác giả, thì việc cộng tác viên quên gắn featured image cho bài viết là điều dễ xảy ra. Chèn đoạn dưới đây vào file functions.php để khắc phục việc đó:

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

0

Bắt buộc bình luận phải đủ ký tự

Một cách chống việc spam vớ vẩn ở comment, bạn có thể chỉ định phải viết tối thiểu bao nhiêu ký tự để có thể đăng bình luận.

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

1

Thêm màu trạng thái bài viết

Mặc định WordPress có một số trạng thái bài viết như Draft, Published, Pending, Future, Private. Nhưng thật khó khăn để nhận ra nếu bạn chỉ lướt sơ danh sách bài viết, thêm màu cho từng trạng thái là cách hữu hiệu nhất.

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

2

Thông thường các plugin như WP External Link sẽ giúp bạn đưa các link trỏ ra ngoài thành nofollow và đưa 1 số link đặc biệt thành dofollow. Thế tại sao lại không thử đưa link các bài viết trong một category nhất định thành nofollow?

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

3

Tự động xóa revision của bài viết

Revision trong WordPress là các bản sao của bài viết nó sẽ tự động lưu sau mỗi thời gian nhất định khi bạn soạn bài. Nếu blog bạn có quá nhiều revision, việc database bị phình to hay chậm chạp là điều dễ hiểu.

Các plugin như WP Clean Up có thể giúp bạn xóa revision thừa nhưng nó chỉ xóa nếu bạn sử dụng plugin đó. Có một cách khác để bạn tự động xóa revision là chèn một đoạn code dưới đây vào file functions.php.

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

4

Tự chèn custom field khi post/page được đăng

Một bài thực hành cho những ai mới tập sử dụng action hook trong WordPress. Bạn có thể tùy chỉnh tự thêm một custom field và một giá trị nhất định mỗi khi bài được đăng lên.

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

5

Đổi slug đường dẫn đến trang tác giả

Mặc định khi truy cập vào một trang tác giả trên WordPress nó sẽ có định dạng http://domain.com/author/thachpham. Mẹo dưới đây có thể giúp bạn đổi chữ author trên đường dẫn thành thanh-vien chẳng hạn.

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

6

Cho phép đăng nhập bằng username lẫn email

Mặc định WordPress chỉ cho phép đăng nhập bằng username thôi, mẹo này sẽ cho phép khách có thể đăng nhập lẫn username và email của thành viên.

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

7

Chặn các truy vấn nguy hiểm

Thông thường các hacker có thể khai thác lỗi SQL Injection bằng việc trực tiếp nhập các câu lệnh truy vấn trên URL của website. Hãy chèn code dưới đây vào file functions.php để ngăn chặn việc này:

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

8

Còn tiếp

Do bài dài nên mình xin tạm dừng ở đây và sẽ giới thiệu thêm các mẹo hay ở bộ sưu tập sau nhé.

Hướng dẫn dùng w3 total cache thachpham

Bài viết Các mẹo hay cho WordPress

1 được giữ bản quyền bởi Thach Pham


Centminmod & WordPress [Phần 7]- Kích hoạt Memcached

May 6, 2014, 9:22 pm

Khi cài đặt Centminmod, chắc hẳn bạn vẫn còn nhớ nó có yêu cầu bạn thiết lập username và mật khẩu cho Memcached chứ? Username và mật khẩu đó sẽ sử dụng để bạn xem thống kê Memcached tại địa chỉ http://123.456.789/memcache.php.

Điều đó có nghĩa là Centminmod đã tự cài và kích hoạt Memcached cho VPS của bạn rồi, việc còn lại chỉ là tiến hành áp dụng nó vào website mà thôi. Và trong bài này mình sẽ hướng dẫn bạn kích hoạt Memcached cho WordPress.

Lưu ý: Khi dùng Memcached, hãy tắt WP Super Cache hoặc W3 Total Cache.

Memcached là gì?

Nếu bạn cần tìm hiểu qua về Memcached thì có thể đọc bài này. Ở đây bạn tạm thời hiểu là nó cũng là một service cache độc lập trên máy chủ, giúp nó lưu lại các đối tượng từ PHP vào trong RAM. Nhìn chung nó cũng giống APC Opcode Cache trong cơ chế làm việc.

Tuy nhiên với APC nó sẽ cần khá nhiều RAM và trong một vài trường hợp, nó sẽ làm website bạn chậm đi nếu không biết cách cấu hình thích hợp. Với Memcached thì ngược lại, đa phần mình đều nhận thấy website nhanh hơn hẳn khi sử dụng nó ở bất cứ cấu hình VPS nào.

Kích hoạt Memcached cho WordPress

Đầu tiên bạn cài plugin WP-FFPC vào và kích hoạt nó lên. Sau đó vào Settings -> WP-FFPC chọn Select backend là Memcached, Expriration Time là 3000 rồi ấn Save Changes.

Hướng dẫn dùng w3 total cache thachpham

Kéo xuống dưới một tí, ở phần Cache invalidation method bạn chọn là Only modified post nếu dùng nhiều website trên VPS, vì nó chỉ xóa cache bài được chỉnh sửa hoặc có comment. Còn cơ chế flush cache là nó sẽ xóa toàn bộ cache của Memcached, kể cả các cache trên website khác nếu bạn có sử dụng.

Sau đó chuyển qua tab Debug & In-dept đánh dấu chọn như hình dưới.

Hướng dẫn dùng w3 total cache thachpham

Các phần khác để nguyên nhé.

Tiếp theo là thêm đoạn này vào file wp-config.php

/*

  • TẠO FIELD CHO USER / /--Kích hoạt function cho các hooks--/ add_action( 'show_user_profile', 'add_custom_user_field' ); add_action( 'edit_user_profile', 'add_custom_user_field' ); / Khởi tạo các field dữ liệu / function add_custom_user_field( $user ) { ?>

    Thông tin tùy chọn

     
    • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database / function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
       update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
      update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
      
      } /
  • HIỂN THỊ FIELD DƯỚI BÀI VIẾT */ add_filter( 'the_content', 'show_user_field' ); function show_user_field($content) {
    $user_field ='  
    
    '.get_avatar( get_the_author_meta('ID'), 85 ) .'
    '.get_the_author_meta('description').'
    • Địa chỉ: '.get_the_author_meta('diachi').'
    '; if ( is_singular('post') ) { return $content.$user_field; } else { return $content; }
    }

9

Bây giờ hãy vào thư mục /etc/usr/local/nginx/conf/wordpress và mở file general.conf lên, tìm:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 0

Thêm dấu # vào trước nó thành:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 1

Sau đó thêm đoạn này vào ngay bên dưới nó:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 2

Sau này nếu không dùng Memcached nữa, bạn chỉ cần xóa dấu # ở đoạn trên đi và thêm dấu # vào đoạn của Memcached.

Tiếp tục quay trở lại thư mục /etc/usr/local/nginx/conf và tạo thêm file wpffpc.conf và copy đoạn này bỏ vào:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 3

Trường hợp nếu bạn cài WordPress vào bên trong một thư mục con nào đó thì tìm /index.php và thay thành /wp/index.php, trong đó wp là tên thư mục chúa file WordPress của bạn.

Tiếp tục mở file nginx.conf trong cùng thư mục và tìm:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 4

Thêm ngay bên dưới nó:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 5

Vào thư mục conf.d và tìm file cấu hình của domain cần kích hoạt Memcached (domain.com.conf), mở ra và tìm:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 6

Thêm ngay bên trên hoặc dưới nó:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 7

Cuối cùng là gõ lệnh sau để khởi động NGINX và PHP-FPM:

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 8

Kiểm tra Memcached

Nếu bạn muốn kiểm tra xem Memcached đã hoạt động chưa thì vào lại Settings -> WP-FFPC và ấn nút Pre-cache.

Đợi tầm 30s rồi gõ lệnh sau vào SSH.

function ilc_mce_buttons($buttons){ array_push($buttons,

 "backcolor",  
 "anchor",  
 "hr",  
 "fontselect",  
 "sub",  
 "sup",  
 "fontselect",  
 "fontsizeselect",  
 "styleselect",  
 "cleanup"  
); return $buttons; } add_filter("mce_buttons", "ilc_mce_buttons"); 9

Thay thachpham.com thành domain của bạn, nếu bạn thấy nó trả về một giá trị header là X-Cache-Engine: WP-FFPC with memcached via nginx thì thành công.

Tăng RAM cho Memcached

Nếu bạn có VPS “khủng” có từ 6GB RAM trở lên, mình khuyến khích bạn nên tăng RAM cho Memcached sử dụng ít nhất là 128MB thay cho 8MB mặc định. Để tăng RAM, hãy mở file /etc/init.d/memcached và tìm

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

08 thay thành

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

09.

Khởi động lại NGINX và PHP-FPM bằng lệnh nprestart.

Lời kết

Như vậy là bạn đã vừa cài xong Memcached vào WordPress rồi đó. Hãy cho mình biết tốc độ truy cập vào website có đổi không nhé (kiểm tra bằng cách vào website trong tình trạng không đăng nhập).

Ở bài tiếp, mình sẽ hướng dẫn bạn cách tối ưu lại ngx_pagespeed để nó làm việc hiệu quả hơn trên WordPress.

Bài viết Centminmod & WordPress [Phần 7]- Kích hoạt Memcached được giữ bản quyền bởi Thach Pham

Làm khung phát nhạc MP3 và ZippyShare trong bài

May 19, 2014, 1:39 am

Thời gian qua mình có nhận được một số câu hỏi như kiểu cách làm một chức năng nghe nhạc trong bài, đặc biệt là phát nhạc từ ZippyShare hoặc có thể phát nhạc từ một link mp3 bất kỳ. Nhân tiện mình cũng muốn làm một trang nghe nhạc đơn giản trên WordPress mà tutorial đó chỉ quan trọng phần làm chức năng nghe nhạc nên mình sẽ viết trước một bài riêng về vấn đề này để bạn có thể hiểu rõ.

Quy trình thực hiện

Trong bài này chúng ta có thể làm rất đơn giản bằng chức năng custom field của WordPress. Để thuận tiện trong việc tạo field cũng như khuyến khích, mình sẽ sử dụng plugin Advanced Custom Field để làm.

Đầu tiên là chúng ta sẽ tạo 2 field khác nhau, một field để nhập link mp3 và một field là để nhập ID của bài hát trên ZippyShare. Sau đó chúng ta sẽ chèn cái player vào theme và gọi giá trị trong field ra để thay thế link cần phát nhạc là được. Quá dễ dàng.

Cách thực hiện

Trước tiên bạn tạo một field loại là Text với tên là link_mp3 như sau, các phần khác để nguyên cũng được:

Hướng dẫn dùng w3 total cache thachpham

Kế tiếp là tạo link ZippyShare với tên là link_zippyshare, cũng là loại Text luôn nhé

Hướng dẫn dùng w3 total cache thachpham

Ok, bây giờ khi vào Post bạn sẽ thấy nó có hai khung nhập link như thế này:

Hướng dẫn dùng w3 total cache thachpham

Tích hợp Player vào theme

Tích hợp MP3 Player (HTML5)

Bước này ta sẽ chỉ cần nhúng một file Javascript vào theme mà thôi chứ không làm gì nhiều đâu. Hãy tải file này về máy, giải nén nó ra và copy file audio.min.js và file player-graphics.gif trong thư mục audiojs vào thư mục theme đang sử dụng.

Sau đó mở file funtions.php chèn đoạn code sau vào:

passwd root 0

Kế tiếp mở file single.php, tìm

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

10 và thêm đoạn ở dưới lên trên hoặc xuống dưới nó.

passwd root 1

Ok rồi, hãy vào một bài và đăng link có đuôi .mp3 vào phần Link Mp3 xem nó có hiển thị chưa.

Chèn player ZippyShare

Cũng mở file single.php và chèn đoạn dưới đây vào ngay bên trên hoặc dưới the_content():

passwd root 2

Sau đó khi chèn nhạc ở phần ZippyShare, bạn chỉ cần điền ID của bài hát vào khung nhập link ZippyShare nhé. Ví dụ link một bài hát sẽ có dạng http://www11.zippyshare.com/v/97448700/file.html thì cái 97448700 chính là ID của bài nhạc.

Lời kết

Trong bài này bạn đã biết được cách tích hợp một player bên ngoài khác là như thế nào cũng như cách sử dụng nó. Tất nhiên chẳng có gì là nâng cao cả, chỉ cần bạn biết qua cách sử dụng custom field và advanced custom field là có thể làm được dễ dàng. Hy vọng sẽ sớm có hướng dẫn làm trang nghe nhạc cho mọi người.

Hướng dẫn dùng w3 total cache thachpham

Bài viết Làm khung phát nhạc MP3 và ZippyShare trong bài được giữ bản quyền bởi Thach Pham

Hiển thị tên tác giả lên Facebook cho WordPress

May 19, 2014, 3:40 am

Cách đây không lâu, Facebook vừa bổ sung thêm một thẻ Open Graph để hiển thị thông tin của tác giả bài viết lên các link được chia sẻ trên Facebook, nó là một cái dòng ngắn nhỏ hiển thị bên cạnh capion của đường link, mà thường là hiển thị địa chỉ website đó. Và trong hướng dẫn này mình sẽ chia sẻ cách ngắn gọn để bổ sung thêm tính năng hiển thị tên tác giả của bài lên Facebook.

Hướng dẫn dùng w3 total cache thachpham

Cách làm cực kỳ đơn giản, đó là mở file functions.php thêm đoạn code này vào cuối file, nếu file có ?> ở cuối thì chèn trước nó nhé.

passwd root 3

Đoạn code trên nghĩa là nếu bạn chia sẻ link dẫn đến một bài viết cụ thể thì nó sẽ hiển thị nickname của người viết bài, còn nếu chia sẻ trang chủ hay các trang khác thì nó sẽ hiển thị tên của website.

Lưu ý là khi làm xong, hãy xóa cache nếu có cài các plugin cache. Các link cũ sẽ không có hiển thị ngay mà phải đợi Facebook cập nhật Open Graph. Nếu không muốn đợi thì bạn có thể vào https://developers.facebook.com/tools/debug/ và copy link bài viết cũ vào, sau đó ấn nút Debug rồi chia sẻ lên Facebook để xem kết quả.

Hiện tại chức năng này chỉ hiển thị ở News Feed, Fanpage và Group thôi nhé.

Bài viết Hiển thị tên tác giả lên Facebook cho WordPress được giữ bản quyền bởi Thach Pham

Tự động loại bỏ liên kết đến hình ảnh trong bài viết

July 7, 2014, 12:30 am

Với WordPress ta có dễ dàng chèn và tạo gallery ảnh đẹp mắt. Tuy nhiên , một phần thực sự khó chịu về việc thêm hình ảnh vào bài viết WordPress là nó tự động tạo liên kết cho các hình ảnh và khi người xem click vào ảnh thì sẽ bị nhảy sang 1 cửa sổ khác gây khó chịu. Bạn có thể bỏ chọn tùy chọn khi thêm một hình ảnh, nhưng đôi khi bạn quên loại bỏ nó. Trong bài viết này tôi sẽ hướng dẫn làm thế nào để tự động loại bỏ các liên kết hình ảnh mặc định trong WordPress .

Tại sao bạn nên vô hiệu hóa liên kết đến Hình ảnh trong WordPress?

Theo mặc định, WordPress tạo liên kết hình ảnh đến chính nó . Nếu người xem nhấp chuột và sau đó họ được đưa đến tập tin hình ảnh . Từ trang này người dùng có hai lựa chọn: nhấn vào nút ‘trở lại’ trong trình duyệt của họ hoặc chuyển sang một trang web khác .

Nó cũng ảnh hưởng đến SEO hình ảnh của bạn bởi vì công cụ tìm kiếm có thể chuyển hướng người dùng đến các liên kết sử dụng cho các hình ảnh thay vì bài viết của bạn . Tổng thể , nó tạo ra sự bất tiện cho người dùng và ảnh hưởng đến tỷ lệ Bounce Rate của trang web.

Một giải pháp là bạn chỉ cần chọn tùy chọn vô hiệu hóa các liên kết khi chèn ảnh, nhưng nó không phải là khả thi bởi vì không phải lúc nào bạn cũng nhớ và sẽ mất công khi bài viết có nhiều ảnh.

Hướng dẫn dùng w3 total cache thachpham

Khi chèn ảnh phần “Link to” chọn None

Làm thế nào để mặc định loại bỏ liên kết của hình ảnh?

Rất đơn giản, bạn chỉ cần thêm đoạn mã sau vào file functions.php trong theme của bạn.

passwd root 4

Có 1 cách khác là bạn dùng Plugin No Image Link tuy nhiên áp dụng cách trên vẫn là đơn giản nhất.

Ho vọng với tut nhỏ này sẽ giúp các bản giảm bớt công sức khi post bài và không gây khó chịu cho người dùng.

Bài viết Tự động loại bỏ liên kết đến hình ảnh trong bài viết được giữ bản quyền bởi Thach Pham

4 cách sửa lỗi không hiển thị Visual Editor

August 8, 2014, 3:37 am

Sau một thời gian hỗ trợ, mặc dù không thể hỗ trợ hết các câu hỏi của độc giả nhưng mình vẫn có thể nhận ra rằng lỗi mất các nút bấm soạn thảo trong WordPress là nhiều người mắc phải nhất. Lỗi này xuất phát từ nhiều nguyên nhân và trong đó hay gặp nhất là các lỗi liên quan đến Javascript có trong theme/plugin và thậm chí là đôi khi người dùng lỡ tay vô hiệu hóa Visual Editor mà không hề hay biết.

Nếu có ai đó vẫn đang gặp lỗi không hiển thị nút bấm soạn thảo sau khi update hoặc cài mới plugin vào thì có thể tham khảo qua 4 cách khắc phục phổ biến mà hầu như 1 trong 4 cách này mình đã áp dụng cho 90% trường hợp xảy ra lỗi nếu không muốn nói là có thể khắc phục hoàn toàn.

Cách khắc phục lỗi Visual Editor

Triệu chứng

Triệu chứng duy nhất của lỗi này là chẳng có nút soạn thảo nào trong khung soạn thảo cả:

Hướng dẫn dùng w3 total cache thachpham

Cách khắc phục

Cách 1. Kiểm tra loại Editor đang sử dụng, kích hoạt Visual Editor

Đầu tiên là bạn hãy kiểm tra xem bạn đang dùng khung soạn thảo HTML hay Visual, vì khi chuyển qua HTML các nút sẽ mất đi và thay vào đó là các tag mà những người mới có thể nhầm lẫn là bị lỗi. Cách kiểm tra là nhìn lên tab định dạng Editor bên tay phải và xem bạn đang chọn là HTML hay Visual. Nếu không có nút Visual thì là do bạn chưa bật chức năng này lên.

Để bật, hãy vào Users -> Your Profile và bỏ chọn mục “Disable the visual editor when writing“.

Cách 2. Sửa file wp-config

Nếu bạn đã làm cách 1 rồi mà nó vẫn bị thì hãy thử chèn đoạn này vào file wp-config.php (chèn bất kỳ ở đâu ở dưới

passwd root 5

Cách 3. Cài plugin Use Google Libraries

Đây là cách mình rất hay dùng vì hầu như nó sửa được các trường hợp bị lỗi liên quan đến khung soạn thảo mà không cần chỉnh sửa nhiều. Khi bị lỗi mất nút soạn thảo, hãy thử cài plugin Use Google Libraries (không có mục tùy chỉnh gì cả) và vào lại khu vực viết bài xem nó còn bị nữa không.

Cũng nói thêm là plugin này sẽ tự động chuyển các thư viện Javascript mà bạn đang sử dụng trong theme/plugin (như jQuery chẳng hạn) sang CDN của Google để tiết kiệm băng thông cũng như khả năng xảy ra xung đột.

Cách 4. Tắt các plugin liên quan đến khung soạn thảo

Trong một vài trường hợp, các plugin như Advanced TinyMCE hoặc tương tự như thế sẽ không hoạt động được khi WordPress tung ra bản cập nhật mới. Chẳng hạn như thời kỳ mới ra phiên bản WordPress 3.9, hầu như các plugin dạng này sẽ không thể hoạt động được cho đến khi họ ra bản cập nhật mới tương thích với WordPress hơn.

Lời kết

Trong số 4 cách trên thì mình khuyến khích bạn nên thử theo thứ tự 3 – 2 – 1 – 4 vì cách số 3 hầu như khắc phục được các trường hợp lỗi Visual Editor. Hy vọng với kinh nghiệm ít ỏi của mình sẽ giúp những bạn đang đau đầu vì lỗi này sẽ tìm ra cách tốt nhất cho riêng mình, và đừng quên cho mình biết các cách trên có giúp ích gì được cho bạn không nhé.

Bài viết 4 cách sửa lỗi không hiển thị Visual Editor được giữ bản quyền bởi Thach Pham

10 lỗi phổ biến khi sử dụng WordPress

August 10, 2014, 6:00 pm

Cũng tiếp tục loạt bài liên quan tới việc sửa các lỗi phổ biến trong WordPress mà lần trước mình đã đăng bài cách sửa lỗi mất nút soạn thảo. Ở bài này, mình sẽ hướng dẫn qua cách sửa 10 lỗi phổ biến nhất mà hầu như ai cũng đã từng gặp qua để nếu bạn có gặp phải thì không mất công phải hỏi ở đâu chi cho mệt.

10 lỗi phổ biến nhất trong WordPress và cách sửa

  • Lỗi 1. Fatal Error: Allowed Memory Size Of XXX Bytes Exhausted
  • Lỗi 2. Warning: Cannot Modify Header Information
  • Lỗi 3. “Briefly Unavailable For Scheduled Maintenance
  • lỗi 4. Lỗi trắng trang
  • Lỗi 5. Bị hỏi tài khoản FTP khi cài theme/plugin
  • Lỗi 6. Error Establishing A Database Connection
  • Lỗi 7. 404 Not Found khi vào xem bài viết
  • Lỗi 8. “unable to create directory wp-content/uploads…” khi upload ảnh
  • Lỗi 9. Stylesheet Is Missing
  • Lỗi 10. PCLZIP_ERR_BAD_FORMAT (-10)

Lỗi 1. Fatal Error: Allowed Memory Size Of XXX Bytes Exhausted

Hướng dẫn dùng w3 total cache thachpham

Triệu chứng:

Lỗi này có thể xảy ra thường xuyên hoặc thỉnh thoảng khi bạn thực hiện tác vụ nào đó trong website. Khi gặp lỗi, nó sẽ trả về lỗi trắng trang kèm theo thông báo là “Fatal Error: Allowed Memory Size Of XXX Bytes Exhausted”.

Nguyên nhân & Cách khắc phục:

Nguyên dân xảy ra lỗi này là do bộ nhớ chung của máy chủ mà bạn được phép sử dụng không cung cấp đủ cho ứng dụng PHP để xử lý WordPress, rất hay gặp trên các host miễn phí và đôi lúc là cả trên host trả phí nếu website bạn có quá nhiều dữ liệu.

Trước tiên, hãy thử tự khắc phục bằng cách chèn đoạn sau đây vào file wp-config.php:

passwd root 6

Hoặc nếu ngại sửa file wp-config.php thì thêm đoạn này vào file .htaccess ở thư mục gốc:

passwd root 7

Nếu có thể, bạn hãy liên hệ với đội ngũ hỗ trợ kỹ thuật để họ xử lý giúp bạn vì trong một số nhà cung cấp họ không cho phép bạn tự làm việc này.

Lỗi 2. Warning: Cannot Modify Header Information

Thông thường sẽ có nhiều bạn trở nên hoảng hốt khi tự dưng website xuất hiện thêm thông báo “Warning: Cannot modify header information – headers already sent by…..” phía trên sau khi cập nhật WordPress, theme, plugin,….

Nguyên nhân & Cách khắc phục:

Đối với WordPress, nguyên nhân chính phổ biến nhất là file báo lỗi (xem trong đoạn báo lỗi) bị thừa một khoảng trắng trước ký tự

Do đó, hãy mở file bị lỗi ra và hãy chắc chắn rằng đầu file không chứa bất kỳ khoảng trắng nào. Và để cho chắc ăn, hãy chủ động thêm ?> ở cuối file.

Lỗi 3. “Briefly Unavailable For Scheduled Maintenance”

Sau khi bấm nút update WordPress hoặc Theme/Plugin và bấm vào tác vụ khác có thể bạn sẽ gặp lỗi này.

Nguyên nhân & Cách khắc phục:

Khi update, WordPress sẽ tự động đưa website về trạng thái bảo trì để hệ thống tự động cập nhật làm xong việc của nó để tránh các phiền toái xảy ra. Vì thế, thông thường thì lỗi này sẽ tự động mất sau khoảng vài chục giây hoặc vài phút.

Trong vài trường hợp hiếm hoi, do quá trình update xảy ra lỗi nên WordPress không thể đưa website về trạng thái ban đầu nên sẽ hiển thị thông báo này gần như là mãi mãi. Lúc đó, hãy thử khắc phục bằng cách xóa file .maintenance ở thư mục gốc thông qua FTP. Lúc này mọi thứ sẽ bình thường trở lại.

Lỗi 4. Lỗi trắng trang

Lỗi này có thể gọi là bất hủ trong WordPress vì nó thường xuyên xảy ra với nhiều nguyên nhân khác nhau. Nhưng đa phần, lỗi trắng trang thường xuất hiện khi gặp các lỗi liên quan đến bên trong code, mà cụ thể là trong themes/plugins nếu bạn không táy máy phần core của WordPress.

Nguyên nhân & Cách khắc phục:

Các nguyên nhân phổ biến nhất là thường:

  • Sửa file functions.php ở theme không đúng cách, sai cú pháp.
  • Plugins không tương thích với phiên bản WordPress hiện tại.
  • Themes bị viết sai cú pháp, hoặc sử dụng hàm không tồn tại.
  • ….

Do đó, nếu bị lỗi trắng trang thì hãy cố gắng nhớ lại xem mình đã táy máy những gì và quay lại đó sửa. Nếu bạn có quyền xem log lỗi của host, hãy mở nó lên để xem các thông báo lỗi được ghi trong đó hoặc nhờ bộ phận kỹ thuật gửi log cho bạn xem.

Lỗi 5. Bị hỏi tài khoản FTP khi cài theme/plugin

Hướng dẫn dùng w3 total cache thachpham

Một vài trường hợp hiếm hoi, bạn sẽ bị hỏi tài khoản FTP của host mỗi khi cài đặt một theme hay plugin mới, cái đó là cơ chế làm việc của WordPress để tiến hành can thiệp vào host để tải hoặc thay đổi các tập tin trên đó.

Nếu bạn không muốn hiển thị thông báo này nữa thì hãy chèn đoạn sau vào file wp-config.php:

passwd root 8

Hoặc nếu chèn đoạn trên mà vẫn không được thì chèn các đoạn sau vào file wp-config.php và thay đổi thành thông tin tài khoản FTP của host:

passwd root 9

Hoặc có một cách khác đơn giản nhất là dùng plugin FTP Access.

Lỗi 6. Error Establishing A Database Connection

Lỗi này sẽ xuất hiện ở hai trường hợp:

  • Thông tin database bạn nhập vào file wp-config.php bị sai.
  • MySQL đang bị quá tải không thể xử lý dữ liệu gửi đi và gửi về được, thường gặp ở các host yếu hoặc bị DDoS.

Lỗi 7. 404 Not Found khi vào xem bài viết

Thông báo lỗi này có lẽ hầu như ai cũng biết đó là máy chủ không tìm được tập tin tương ứng với truy vấn người dùng ở trình duyệt. Trong WordPress, nhiều người sẽ mắc phải lỗi này khi vào xem bài viết hoặc một cái gì đó bất kỳ sau khi tùy chỉnh permalink.

Lý do xuất hiện lỗi là do cơ chế rewrite URL chưa được kích hoạt trên website bởi vì file .htaccess chưa chèn các quy tắt rewrite cho nó. Do đó, hãy thử chèn đoạn sau vào file .htaccess ở thư mục gốc trên host:

yum install wget unzip -y 0

Lỗi 8. “unable to create directory wp-content/uploads…” khi upload ảnh

Hướng dẫn dùng w3 total cache thachpham

Có thể bạn đã từng đau đầu vì nó báo lỗi màu đỏ choét như thế mỗi khi upload ảnh lên bài viết. Lý do xuất hiện lỗi này là máy chủ không có quyền ghi dữ liệu để tiến hành tạo thư mục hoặc đăng một dữ liệu mới vào đó.

Để khắc phục, bạn có thể tiến hành CHMOD thư mục wp-content/uploads và tất cả các thư mục con bên trong của nó thành 755.

Xem thêm: CHMOD là gì và cách CHMOD

Lỗi 9. Stylesheet Is Missing

Hướng dẫn dùng w3 total cache thachpham

Đối với một số người dùng WordPress mới thì sẽ thường xuyên gặp lỗi này khi tải file theme từ internet về thay vì cài theme có trong thư viện.

Lỗi này có 2 nguyên nhân chính:

  • File theme thiếu file style.css (hiếm gặp).
  • Theme bị nén sai cấu trúc. Nghĩa là theme khi nén và giải nén ra, nó sẽ được chồng vào 1 hoặc nhiều thư mục khác nhau. Cách khắc phục là hãy giải nén nó ra ở máy tính và vào thư mục gốc của theme nén lại thành định dạng .zip, đây là lỗi rất thường gặp.

Lỗi 10. PCLZIP_ERR_BAD_FORMAT (-10).

Hướng dẫn dùng w3 total cache thachpham

Cũng là một lỗi phổ biến liên quan khi upload theme từ máy tính lên. Nguyên nhân là do theme bạn upload lên là định dạng .rar chứ không phải .zip, WordPress chỉ chấp nhận file .zip mà thôi để nó tự động giải nén.

Cách khắc phục là hãy giải nén theme ra và nén lại thành .zip thay vì .rar.

Lời kết

Đó là 10 lỗi cơ bản nhưng hầu như ai cũng đã từng gặp phải và sẽ có chút bối rối khi lần đầu gặp phải. Nhưng nếu bạn thây còn lỗi nào khác phổ biến hơn, hãy giúp mình bổ sung ở phần bình luận nhé để mình bổ sung vào bài viết.

Bài viết 10 lỗi phổ biến khi sử dụng WordPress được giữ bản quyền bởi Thach Pham

Làm sao để cài theme giống demo?

August 13, 2014, 2:36 am

Câu hỏi này mình đã từng muốn trả lời từ rất lâu rồi nhưng khổ nỗi tìm cách mãi mà chẳng biết phải viết bài như thế nào. Trước tiên bạn cần phải hiểu, cấu trúc theme trong WordPress hoàn toàn khác nhau, không có cái nào giống cái nào cho nên cách cài đặt và sử dụng đều khác nhau. Ngoại trừ các child theme dành riêng cho một theme nào đó, như Genesis chẳng hạn.

Vì vậy, bạn sẽ không bao giờ tìm được câu trả lời nếu hỏi câu “Sao em cài theme nó ra không giống demo?”, ngoại trừ bạn hỏi chính tác giả của theme đó.

Bạn đã đọc tới bài này thì chắc chắn cũng đang gặp các vấn đề liên quan đến việc làm sao để cài theme giống demo, ở bài viết này có thể mình sẽ không giúp bạn hết tất cả những vướng mắc nhưng hy vọng nó cũng giúp bạn phần nào trong việc định hướng cài đặt.

Nếu dùng theme trả phí, hãy trả tiền

Mở đầu bài này mình xin nói qua về văn hóa sử dụng sản phẩm số. Nếu bạn muốn website mình thật đẹp, thật chuyên nghiệp rồi quyết định chọn theme trả phí thì hãy tự bỏ tiền ra mua nó.

Khoan nói đến việc văn hóa trả tiền, mà các bạn trả tiền ra là để được nhà cung cấp/tác giả theme đó hỗ trợ bạn cài đặt và giải quyết các lỗi phát sinh.

Hãy tưởng tượng bạn đang sử dụng theme Genesis Framework và bạn có cài một plugin có liên quan đến việc chèn linh tinh gì đó vào mã nguồn theme thì lúc đó bạn có hỏi ai đi chăng nữa cũng sẽ không có câu trả lời ngoại trừ hỏi trên forum hỗ trợ của họ.

Tiếp đến nữa là việc cài như demo, nếu sử dụng theme trả phí và tải chính gốc từ trang của họ về bạn sẽ luôn luôn được kèm theo một file hướng dẫn cài đặt rất chi tiết, chỉ cần follow theo tài liệu đó là bạn có ngay một trang như demo.

Không hề có một lý do nào để bạn sử dụng hàng trả phí mà không trả tiền, bạn ra chợ mua 1 bó rau 1 đồng bạn cũng phải trả tiền chứ đừng nói đến vài chục đô-la. Đó là quy luật.

Theme cài vào có giống ngay như demo được không?

Câu trả lời là không, để cho theme được giống như demo thì ít nhất bạn đã làm những việc sau:

  • Thêm menu vào đầy đủ các vị trí trong Appearance -> Menus.
  • Thêm các widget cần thiết có hỗ trợ trong theme.
  • Tạo một page với template đặc trưng và tùy chỉnh nó thành Home Page (xem phía dưới).
  • Truy cập vào Theme Options của theme (nếu có) và cài đặt những thông số cần thiết như Logo chẳng hạn.
  • Truy cập vào Customizer của theme và xem các thông số trong đó (nếu có).

Đó là mình tóm tắt như thế, chi tiết mình sẽ nói thêm phía dưới.

Hãy chắc chắn là website đã có nội dung sẵn

Rất nhiều theme cần website bạn có sẵn các nội dung như bài viết, category, menu, hình ảnh,…để hiển thị đầy đủ. Vì vậy khi cài theme, đừng bao giờ cài khi website bạn chỉ có một bài Hello World! mà hãy bổ sung nội dung vào. Nếu bạn chưa có nội dung thì hãy sử dụng ThemeUnit Test (Import vào Tools -> Import -> WordPress) để nó tạo cho bạn nội dung có sẵn, sau này có thể xóa đi nếu không sử dụng.

1. Đối với các theme tải tại WordPress.Org

Hướng dẫn dùng w3 total cache thachpham

Các theme miễn phí có trong thư viện theme là những theme có thể nói dễ cài đặt nhất vì nó tuân thủ theo các quy định nghiêm ngặt của Automattic từ chức năng đến cách viết code nếu muốn đưa sản phẩm của họ lên đây.

Khi bạn mới tập sử dụng WordPress, đừng vội thử ngay các theme trả phí vì nó sẽ làm bạn nản chí hơn (mình đã nói rất nhiều lần) mà hãy tập làm quen với cách cài đặt các theme có sẵn trong thư viện.

Các theme có trang chủ là dạng blog như thông thường thì chắc chắn ai cũng biết cài rồi vì chẳng cần làm gì thêm. Nhưng một theme như phía dưới thì sao?

Hướng dẫn dùng w3 total cache thachpham

Các theme có trang chủ như thế này thường không hiện đúng khi mới cài vào.

Mà nó chỉ hiển thị thế này:

Hướng dẫn dùng w3 total cache thachpham

Bộ dạng mới cài vào của một theme có trang chủ khác thường.

Ok đừng lo lắng, bây giờ bạn hãy làm từng bước như sau:

1.1) Kiểm tra nơi hướng dẫn

Ngoại trừ các theme cực đơn giản thì tác giả mới không có hướng dẫn chứ những theme dạng bóng bẩy như trên thì họ sẽ có cả một documentation hẳn hoi đấy nhé.

Trước tiên là bạn vào thư viện theme WordPress và tìm tên theme đó, sau đó nhấn vào chỗ Theme Homepage.

Hướng dẫn dùng w3 total cache thachpham

Sau đó cố quan sát kỹ xem chỗ nào họ ghi là Documentation, Tutorial hoặc đại loại như thế.

Hướng dẫn dùng w3 total cache thachpham

Vào đó là họ có đầy đủ hướng dẫn, chịu khó đọc và làm theo nhé. Trường hợp không có thì bạn vào Theme Option kiểm tra xem có đường dẫn nào dẫn tới trang hướng dẫn không, chịu khó quan sát nhiều nhất có thể.

Còn nếu tìm mãi mà không ra nữa thì làm tiếp bước dưới, đó là tự mò.

1.2) Tự cài đặt không cần hướng dẫn

Tới lúc này là bạn nên giở ra hết mọi kiến thức WordPress mà bạn có được để thử, chỉ có thử thì mới biết được nguyên nhân mà rút ra kinh nghiệm cho mình.

Hãy vào Pages -> Add New và tạo một page mới tên là Trang chủ chẳng hạn. Sau đó kiểm tra bên phần Page Template có cái template nào tên là Home không, nếu có template nào tên lạ lạ thì có thể chọn thử, ở theme này mình chọn là Business Template.

Hướng dẫn dùng w3 total cache thachpham

Nên kiểm tra Page Template để xem có template nào bạn cần không.

Phần nội dung của page bạn để trống. Sau đó ấn Publish.

Tiếp tục, tạo thêm một page tên là Blog và chọn Template liên quan, nếu không có thì thôi.

Cuối cùng là vào Settings -> Reading và chọn A static page rồi chọn page Home cho Front page và page Blog cho Posts page.

Hướng dẫn dùng w3 total cache thachpham

Save lại rồi ra xem kết quả, bảo đảm khác ngay.

Tiếp tục, đừng quên kiểm tra khu vực Appearance -> Widget để xem cấu trúc sidebar của nó và thêm vào một số widget linh tinh, mỗi sidebar bạn nhét vào 1, 2 widget gì đó để quan sát là được.

Cũng như menu, bạn hãy làm tương tự để theme có đủ thành phần cần thiết.

Và cuối cùng đó là hãy xem qua Theme Option, phần quan trọng nhất để theme bạn có giống như demo hay không. Thông thường Theme Option họ sẽ nhét vào khu vực Appearance nên bạn cứ vào đó tìm.

Hướng dẫn dùng w3 total cache thachpham

Nếu bạn thấy gần Theme Options có hiển thị Customize thì nhấp vào luôn để xem nó có tùy chọn gì không và thử vọc qua hết các tùy chọn đó xem điều gì xảy ra nhé.

Hướng dẫn dùng w3 total cache thachpham

Nói chung, bạn cứ mò hết toàn bộ ngóc ngách cùng những kinh nghiệm mà mình đã chia sẻ ở phía trên, và hầu như các theme tại WordPress.Org đều không quá phức tạp.

2. Đối với theme trả phí

2.1) Các theme ở ThemeForest

ThemeForest là chợ theme được coi là lớn nhất hiện nay, nơi chứa hàng chục nghìn theme trả phí khác nhau để bạn thỏa sức lựa chọn. Các theme được bán ở đây nhìn chung đều có cách cài đặt khác nhau và dĩ nhiên là hơi khó cài đặt vì nó là trả phí, nhưng bù lại thì tất cả theme đều có thư mục hướng dẫn (documentation) kèm theo khi bạn tải theme về, trong thư mục documentation đó sẽ có một file HTML chứa nội dung hướng dẫn.

Khi tải, hãy chọn phần All files & documentation để nó tải kèm file hướng dẫn.

Hướng dẫn dùng w3 total cache thachpham

Tùy chọn tải theme từ ThemeForest sau khi mua

Tải về xong đừng upload theme lên cài ngay mà hãy giải nén ra để không bị lỗi, do nó còn chứa rất nhiều thành phần linh tinh phía trong.

Hướng dẫn dùng w3 total cache thachpham

Các thư mục và file kèm theo khi giải nén một theme từ ThemeForest

Như bạn thấy, nó có rất nhiều thư mục và file nên vì lẽ đó mà nhiều người vừa nhìn vào đã thấy rối không biết bắt đầu từ đâu. Thông thường một theme trên ThemeForest sẽ có các thư mục như thế, mình xin giải nghĩa như sau:

  • _MACOSX: Thư mục này vô nghĩa, tự tao ra khi họ nén file trên hệ điều hành Mac.
  • Documentation: Thư mục hướng dẫn, bên trong sẽ có 1 file HTML ghi nội dung hướng dẫn hoặc file text kèm địa chỉ đọc hướng dẫn. Kiểu gì cũng có hướng dẫn vì đó là quy định của Envato.
  • Licensing: File chứa nội dung cam kết bản quyền, quy định bản quyền.
  • PSD Files: Thư mục này sẽ chứa các file .PSD (định dạng của Photoshop) để người dùng có thể sửa lại thiết kế và dùng vào mục đích khác.
  • Tên-Theme.zip: Đây là file bạn sẽ dùng để upload lên Appearance -> Themes, vài trường hợp hiếm hoi theme nó sẽ chứa vào một thư mục mà không phải file ZIP, lúc đó bạn hãy tự ZIP lại hoặc upload lên bằng FTP.

Trình tự cài đặt theme ở ThemeForest:

  • Upload theme lên và kích hoạt.
  • Import file XML kèm theo của nó nếu có, vì chỉ có import vào mới có thể cài nhanh nhất mà không cần làm từng bước.
  • Đọc documentation từng bước để làm theo.
  • Nếu gặp lỗi, hãy vào phần Support ở trang chi tiết theme.

2.2) Đối với các theme ở nhà cung cấp lẻ

Những theme như Genesis, Magazine3, GabfireThemes, Theme-Junkie đều là những nhà cung cấp lẻ nên mọi hướng dẫn hầu như họ không bỏ vào file tải về mà sẽ bỏ vào một khu vực riêng trên website của họ để khách hàng dễ dàng tra cứu, không có bất cứ nhà cung cấp theme tốt nào mà lại không có chỗ hướng dân cả nên các bạn cứ yên tâm.

Xem thêm: Các nhà cung cấp theme tốt nhất.

Lời kết

Cuối bài, mình muốn rút gọn là mỗi theme đều có cách cài đặt khác nhau nên đừng bao giờ hỏi người khác cách cài theme vì số lượng theme WordPress hiện nay tính luôn miễn phí và trả phí là trên 100.000 themes khác nhau nên tốt hơn hết là hãy tự tham khảo nguồn hướng dẫn của theme đó, cũng như dùng kinh nghiệm bản thân để được theme bạn yêu thích.

Bài viết Làm sao để cài theme giống demo? được giữ bản quyền bởi Thach Pham


Làm nút mạng xã hội trôi dọc ngoài trang chủ

August 14, 2014, 4:01 am

Khi sử dụng plugin Digg Digg (giống blog Thachpham.com đang sử dụng để làm các nút like) thì có nhiều yêu cầu là muốn cho nó hiển thị ra mọi trang, nhất là trang chủ, trong khi plugin này chỉ hỗ trợ hiển thị trong Post/Page mà thôi.

Nếu những ai muốn làm các nút này để nó hiển thị ra trang chủ hay mọi trang thì có thể tham khảo hướng dẫn này để tự làm các nút mạng xã hội trượt theo trình duyệt hoàn toàn thủ công, sử dụng một plugin của jQuery.

1. Tải file cần thiết

Đầu tiên bạn cần tải các file cần thiết của plugin jQuery này tại đây và giải nén ra, sau đó upload toàn bộ các file trong đó vào thư mục theme mà bạn đang dùng.

2. Sửa file script

Để hoạt động tốt nhất theo ý bạn, hãy mở file fshare-script.js lên, nội dung nó như sau:

yum install wget unzip -y 1

Trong đó, bạn muốn hiển thị nút nào thì đổi false thành true và ngược lại để ẩn nó đi.

Tham số upperLimitElementId nghĩa là ID của vị trí mà bạn muốn cho nút này bắt đầu xuất hiện, hãy view source của website và tìm ID (

).

Tham số lowerLimitElementId nghĩa là ID của vị trí mà bạn muốn không cho nó tiếp tục trượt nữa khi chạm đến, thường là phần Footer của website.

Cách tìm ID: Mở trình duyệt (Google Chrome/Firefox), ấn chuột phải vào vị trí mà bạn muốn xem ID, chọn Inspect Element rồi tìm đoạn nào chứa id=”abcxyz” chính là nó. Ở trong file mình đã điền sẵn ID của theme Twenty Fourteen.

3. Chèn các file script và CSS vào theme

Bây giờ hãy mở file functions.php lên và chèn toàn bộ đoạn code dưới đây vào đó:

yum install wget unzip -y 2

Lưu lại. Tiếp tục mở file header.php và chèn đoạn này vào cuối file:

yum install wget unzip -y 3

Ok, lưu lại và ra trang chủ xem kết quả.

Nếu bạn muốn cái khung nút mạng xã hội có thẩm mỹ hơn thì chèn thêm đoạn sau vào file style.css.

yum install wget unzip -y 4

Hướng dẫn dùng w3 total cache thachpham

Trường hợp bạn muốn cho cái khung trượt nó chạy nhanh hơn thì hãy mở file fshare-script.js ra và tìm:

yum install wget unzip -y 5

Sau đó thêm đoạn này vào bên trên nó:

yum install wget unzip -y 6

Số càng nhỏ nó chạy càng nhanh nhé.

Hướng dẫn dùng w3 total cache thachpham

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

Bài viết Làm nút mạng xã hội trôi dọc ngoài trang chủ được giữ bản quyền bởi Thach Pham

Cách chuyển WordPress từ HTTP sang HTTPS/SSL ở cPanelX

August 25, 2014, 5:00 pm

Cách đây không lâu Google đã chính thức xác nhận sử dụng SSL sẽ tốt hơn cho SEO nhờ vào việc bảo đảm uy tín bảo mật dữ liệu người dùng, ngoài ra SSL cũng giúp cho các dữ liệu gửi đi của website bạn bảo mật tốt hơn.

Nếu bạn đã quyết định sử dụng SSL mà chưa biết cách cài đặt thế nào thì mình xin hướng dẫn. Tuy nhiên tốt hơn hết, bạn nên làm với một website mới hoặc chưa hoạt động được lâu vì nó có thể gây ảnh hưởng ở thời gian đầu lúc mới chuyển sang.

Ở bài này mình sẽ chỉ bạn cách cài SSL thông qua cPanelX có hỗ trợ SSL, nếu bạn dùng VPS thì có thể tham khảo trên Google nhưng mình khuyến khích bạn nên thử qua cPanelX nếu lần đầu tiên cài.

Host để sử dụng SSL

Không phải host nào cũng có thể cài SSL vào được, vì thường tính năng SSL chỉ có ở các gói cao cấp. Ở bài này mình sẽ làm dựa trên gói Enterprise của StableHost, bạn cũng có thể sử dụng các gói sau có hỗ trợ SSL:

  • A2Hosting - Gói nào cũng có SSL. Nhưng bạn có thể liên hệ với kỹ thuật để họ giúp bạn cài SSL.
  • InmotionHosting - Giá hơi cao nhưng khi mua họ đã cài sẵn cho bạn.
  • LiquidWeb - Very good hosting – free SSL.

Hoặc bạn có thể sử dụng gói host nào đó mà khi vào cPanel bạn thấy có thêm mục SSL/TSL Manager(Security) như thế này:

Hướng dẫn dùng w3 total cache thachpham

Quan trọng nhất là gói host bạn đang sử dụng phải là IP riêng (dedicated IP), bạn có thể yêu cầu nhà cung cấp host cài cho IP riêng và thường giá chỉ dao động khoảng $2/tháng.

Mua SSL Certificates Key

Muốn cài được SSL thì bạn phải mua một key chứng thực SSL và áp dụng cho domain. Hiện nay hầu hết những nhà cung cấp domain/hosting đều cung cấp dịch vụ này nhưng tốt hơn hết bạn nên mua ở một nơi chuyên về nó để có gặp vấn đề gì thì dễ dàng được hỗ trợ.

Có 3 loại SSL mà bạn có thể mua như sau:

  • Domain-level validation – Đây là loại cơ bản nhất, nó chỉ bao gồm giao thức SSL để bảo mật dữ liệu gửi đi (bạn nên dùng loại này nếu mới bắt đầu).
  • Organization validated – Loại này dành cho tổ chức/doanh nghiệp vì nó hỗ trợ lưu thông tin của tổ chức vào mã chứng thực cũng như bảo mật tốt hơn, dành cho các website thương mại điện tử.
  • Extended validation – Đây là loại cao cấp nhất, tuy nhiên website nào muốn đăng ký loại này sẽ phải được cơ quan có thẩm quyền kiểm tra website kỹ lưỡng trước khi cấp chứng chỉ.

Ở bài này, mình sẽ sử dụng loại Domain level validation.

Có rất nhiều chỗ để bạn mua SSL, tuy nhiên mình khuyến khích các bạn mua ở các website như:

  1. Namecheap
  2. Godaddy
  3. Comodo
  4. SSLs

Và ở bài này mình sẽ mua SSL ở Namecheap vì nó rẻ.

Hướng dẫn dùng w3 total cache thachpham

Để mua SSL ở Namecheap, bạn vào trang chủ và ấn chọn Security -> SSL.

Hướng dẫn dùng w3 total cache thachpham

Sau đó chọn gói Domain Level Validation.

Hướng dẫn dùng w3 total cache thachpham

Và ở trong đây, bạn có thể mua loại PotisiveSSL (cho 1 domain) hoặc PositiveSSL Multi-Domain (cho nhiều domain).

2. Cài đặt SSL

Hãy truy cập vào cPanel của host bạn đang sử dụng và ấn vào phần SSL/TSL Manager ở mục Security.

Hướng dẫn dùng w3 total cache thachpham

Rồi nhấn vào link Generate, view, or delete SSL certificate signing requests để tạo key CSR.

Hướng dẫn dùng w3 total cache thachpham

Và nhập domain cần cài SSL cùng các thông tin bắt buộc như tên thành phố, quốc gia, tỉnh thành,…Các mục không có chữ Required bạn có thể bỏ trống, nhưng phần email tốt nhất cứ điền.

Hướng dẫn dùng w3 total cache thachpham

Điền xong ấn nút Generate ở cuối trang để lấy CSR key.

Hướng dẫn dùng w3 total cache thachpham

Trong đó có nhiều loại key nhưng bạn chỉ cần để ý tới Encoded CSR thôi nhé. Tạm thời đừng tắt nó đi.

Truy cập vào khu vực quản lý SSL của bạn vừa mua và chọn Activate Now (Namecheap).

Hướng dẫn dùng w3 total cache thachpham

Sau đó ở phần Select web server bạn chọn là cPanel và ở dưới bạn copy Encoded SCR key vào nhé.

Hướng dẫn dùng w3 total cache thachpham

Ấn Next để tiếp tục, nó sẽ lấy thông tin của key, bạn chọn email mà bạn đang dùng rồi tiếp tục ấn Next.

Hướng dẫn dùng w3 total cache thachpham

Sau đó tiếp tục ấn Next và nhập thông tin cá nhân rồi Submit Order.

Bây giờ bạn đã hoàn tất quá trình đăng ký, tuy nhiên bạn cần phải đợi bước cuối cùng đó là được xét duyệt và email thông báo sẽ gửi vào email mà bạn đã khai báo ở trên.

Hướng dẫn dùng w3 total cache thachpham

Đợi tầm 1 tiếng sau và mở email lên, bạn sẽ nhận được một email thế này:

Hướng dẫn dùng w3 total cache thachpham

Nhấp vào liên kết here trong email và điền mã kích hoạt ghi ở dưới vào.

Hướng dẫn dùng w3 total cache thachpham

Và đợi một xíu chờ email họ gửi cho bạn 1 file .zip bao gồm 2 files như hình dưới và một đoạn key ở cuối email.

Hướng dẫn dùng w3 total cache thachpham

2 files trong file .zip mà họ gửi qua email

Bây giờ hãy quay trở lại cPanel -> SSL/TSL Manager -> Certificates (CRT) và upload file .crt mà bạn vừa tải về máy lên như thế này.

Hướng dẫn dùng w3 total cache thachpham

Tiếp tục vào lại cPanel -> SSL/TSL Manager -> Install and Manage SSL for your site (HTTPS) (chọn Manage SSL Sites).

Sau đó chọn domain mà bạn đã xác thực SSL và bấm Autofill by Domain để nó tự điền CRT và Private Key.

Hướng dẫn dùng w3 total cache thachpham

Riêng phần Certificate Authority Bundle: (CABUNDLE), bạn hãy mở file ca-bundle bằng notepad mà bạn vừa tải về với file .crt và copy nội dung đó bỏ vào.

Bây giờ bạn đã cài SSL thành công và hãy thử truy cập vào địa chỉ https://domain.com là được. Tuy nhiên nếu bạn đang sử dụng CloudFlare miễn phí thì sẽ không truy cập được vì nó không hỗ trợ SSL cho gói miễn phí, bạn phải nâng cấp lên hoặc sử dụng DNS mặc định của nhà cung cấp host.

Cấu hình SSL cho WordPress

Ngay sau khi bạn làm các bước trên xong thì vẫn chưa hoàn tất vì hiện tại WordPress của bạn vẫn đang sử dụng giao thức HTTP thay vì HTTPS. Để bắt buộc nó sử dụng HTTPS, bạn cần phải làm thêm các bước tiếp theo.

Trước tiên là vào Settings -> General và đổi địa chỉ thành https://

Hướng dẫn dùng w3 total cache thachpham

Tiếp tục, mở file wp-config.php ra và chèn đoạn dưới đây vào:

yum install wget unzip -y 7

Hướng dẫn dùng w3 total cache thachpham

Chèn thêm đoạn sau vào file .htaccess để nó tự động redirect đường dẫn cũ từ http sang https.

yum install wget unzip -y 8

Hoặc nếu bạn đang dùng plugin iThemes Security, hãy tìm tới phần SSL và bật tùy chọn như dưới mà không cần làm các bước trên.

Hướng dẫn dùng w3 total cache thachpham

Cuối cùng là chuyển toàn bộ liên kết trong database (hình ảnh trong bài chẳng hạn) sang https bằng cách sử dụng plugin Safe Search Replace như sau:

Hướng dẫn dùng w3 total cache thachpham

Nhớ gõ địa chỉ của bạn chứ đừng có gõ thichviet.com của mình nhé.

Hướng dẫn dùng w3 total cache thachpham

Okay, bây giờ địa chỉ website của bạn đã có HTTPS rồi đó.

Hướng dẫn dùng w3 total cache thachpham

Nếu bạn truy cập vào trang chủ và thấy https:// nó màu vàng thì lý do là có một số thành phần trên website chưa được đổi sang HTTPS. Bạn ấn chuột phải vô trang và chọn Inspect Element rồi chuyển qua tab Console để xem các liên kết nào chưa được chuyển sang SSL rồi tiến hành sửa thủ công.

Hướng dẫn dùng w3 total cache thachpham

Sau khi cài đặt xong toàn bộ, địa chỉ của bạn bây giờ đã có HTTPS

Hướng dẫn dùng w3 total cache thachpham

Hướng dẫn dùng w3 total cache thachpham

Bài viết Cách chuyển WordPress từ HTTP sang HTTPS/SSL ở cPanelX được giữ bản quyền bởi Thach Pham

Tìm hiểu cấu trúc database WordPress và cách tối ưu

September 4, 2014, 7:10 am

Mặc dù bạn là một người sử dụng WordPress thông thường hay một lập trình viên WordPress thì việc hiểu cấu trúc database và các thao tác cơ bản sẽ giúp bạn ít nhiều trong quãng thời gian sử dụng, chẳng hạn như bạn có thể hiểu các dữ liệu được lưu ở đâu, thay đổi theme thì nó sẽ lưu các tùy chọn ở đâu để có thể linh hoạt hơn trong việc kiểm soát kho dữ liệu đồ sộ này.

Hoặc hơn thế nữa, vào một ngày đẹp trời có một theme bị lỗi khiến bạn không vào được Dashboard để đổi sang theme khác thì việc duy nhất bạn có thể làm là vào tận database để sửa.

Cấu hình database tại file wp-config.php

Trước khi vọc vạch vào trong database thì chúng ta cần biết mã nguồn WordPress kết nối với database ở đâu và có các tham số cấu hình liên quan. Và chắc tất cả đều biết là cấu hình database sẽ nằm trong file wp-config.php trên website, file đó có nhiều nội dung nhưng đây là 4 dòng cấu hình database:

yum install wget unzip -y 9

Ở trong cách cài đặt WordPress mình không nói đến bước sửa file wp-config.php bởi vì chỉ cần chạy website và nó sẽ tự kêu bạn nhập các thông tin database, tránh khả năng bạn mở lên và sửa không đúng cách dẫn tới việc bị lỗi.

Nhưng khi bạn chuyển website sang host khác hoặc làm gì đó liên quan đến việc thay đổi database thì chắc chắn bạn cần phải hiểu 6 dòng trên. Và liên quan đến bảo mật, bạn cần hiểu thêm dòng này:

cd /usr/local/src 0

Mặc định WordPress sẽ cấu hình các tiền tố của database là wp_ nhưng bạn nên đổi nó thành một cái tên khác để hạn chế local attack, plugin iThemes Security có hỗ trợ chức năng này. Hoặc là bạn nên nhập một tiền tố khác khi cài đặt một website WordPress mới và tiền tố phải có dấu _ ở cuối để phân cách tên table của database.

Cấu trúc của database mặc định

Để xem cấu trúc các bảng và cột dữ liệu bạn cần truy cập vào PhpMyAdmin thường có mặt ở tất cả mọi gói host mà bạn mua. Bạn có thể thấy mặc định WordPress có tổng cộng 11 bảng dữ liệu (table).

Hướng dẫn dùng w3 total cache thachpham

Ý nghĩa của các table như sau:

wp_commentmeta: Mục này sẽ chứa các dữ liệu vĩ mô của các bình luận có trên website nếu bạn có sử dụng custom comment meta. Chẳng hạn như bạn sử dụng plugin CommentLuv thì table này sẽ chứa các địa chỉ website từ RSS Feed của người bình luận. Nếu bạn dùng Akismet thì cột này sẽ phình to ra sau một thời gian dài.

  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 11: Cột này sẽ chứa dữ liệu cần thiết về các bình luận như tên người bình luận, nội dung, ngày tháng, địa chỉ website,….
  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 12: Kể từ phiên bản WordPress 3.7 thì họ đã tắt đi chức năng Blogroll thường được dùng để thêm các liên kết mình yêu thích. Và các dữ liệu từ blogroll đó sẽ lưu ở đây, nhưng bây giờ thì hầu như không dùng tới.
  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 13: Table này khá quan trọng vì nó lưu trữ hầu hết các dữ liệu liên quan đến thiết lập của bạn trong website. Chẳng hạn như tên website, địa chỉ website, plugin đang dùng, theme đang dùng, dữ liệu khi kích hoạt theme và plugin,…Do đó nếu bạn muốn sửa plugin và theme đang dùng thì cứ vào table này.
  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 14: Các dữ liệu trong bảng này là những dữ liệu vĩ mô có liên quan đến thiết lập của các post type mà bạn đang dùng. Chẳng hạn như các giá trị custom field,…
  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 15: Những nội dung chính của một post type như tiêu đề, tác giả, nội dung,…sẽ chứa trong bảng này. Áp dụng cho toàn bộ post type, kể cả custom post type.
  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 16: Như bạn biết mặc định taxonomy là Category và Tag. Ví dụ ở category, bạn tạo ra 5 mục khác nhau thì 5 mục đó chính là term. Term sẽ được lưu trữ toàn bộ tại table này.
  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 17: Table này là chứa dữ liệu để một term có thể kết nối với một taxonomy qua ID. Chẳng hạn như bạn vừa tạo ra một term tên “Giáo dục” nhưng nó sẽ không thể hiểu “Giáo dục” là tag hay category nếu thiếu table này.
  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 18: Là nơi chứa đựng các danh sách taxonomy mà bạn đang có, bao gồm cả custom taxonomy.
  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 19: Mỗi thông tin thành viên sẽ có thêm các tùy chọn thông tin thêm như họ tên, nickname và các user custom field. Các dữ liệu vĩ mô đó sẽ lưu ở đây.
  • /*
  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    } 20: Là nơi chứa đựng các thông tin quan trọng của một thành viên như username, mật khẩu, email,…

Nhưng có thể bạn vào sẽ thấy nhiều table hơn vì có khá nhiều plugin sẽ tự tạo cho nó một table riêng để chứa các dữ liệu liên quan tới nó.

Hướng dẫn dùng w3 total cache thachpham

Mô hình kết nối giữa các table với nhau

Mỗi một table sẽ có rất nhiều cột (column) và hàng (row) khác nhau, và mỗi cột và hàng nó đều có các key (khóa) và value (giá trị). Nó giống thế này:

Hướng dẫn dùng w3 total cache thachpham

Nếu bạn cần sửa giá trị thì chỉ cần ấn vào nút Edit rồi tiến hành sửa là xong.

Tối ưu database

Database tương tự như ổ cứng, do nó phải thường xuyên đọc – ghi – xóa dữ liệu liên tục nên sau một thời gian dài nó sẽ phát sinh ra các phân mảnh database làm cho dữ liệu bạn nặng nề hơn, truy xuất chậm hơn thông thường.

Vì vậy để chăm sóc “sức khỏe” cho database, bạn nên tiến hành sử dụng công cụ optimize database để tối ưu nó. Cách tối ưu là bạn click chọn vào phần Check All để chọn tất cả các table.

Hướng dẫn dùng w3 total cache thachpham

Sau đó ở phần With selected kế bên, bạn chọn Optimize Database.

Hướng dẫn dùng w3 total cache thachpham

Hoặc bạn có thể sử dụng plugin WP Cleanup để dọn rác và tối ưu database tốt hơn.

Backup database bằng PhpMyAdmin

Một vài trường hợp bạn không thể dùng plugin để backup WordPress thì bạn còn có cách khác để thử đó là backup thủ công bằng PhpMyAdmin.

Sau khi chọn database trong PhpMyAdmin, bạn chọn phần Export và ấn Go để tải file backup của database về máy, file này có đuôi mở rộng là .sql.

Hướng dẫn dùng w3 total cache thachpham

Trường hợp cần khôi phục (restore) lại dữ liệu thì chỉ cần chuyển qua tab Import và upload file .sql lên.

Lời kết

Nếu bạn thấy bài này dễ hiểu thì cũng đơn giản thôi vì WordPress không có gì là khó hiểu cả. Hãy nhớ rằng trước khi đụng vào database để sửa các giá trị bên trong đó, hãy backup lại để nếu có xảy ra lỗi thì cũng còn đường mà khôi phục lại như cũ.

Bài viết Tìm hiểu cấu trúc database WordPress và cách tối ưu được giữ bản quyền bởi Thach Pham

Sửa lỗi không hiển thị ngôn ngữ đã dịch ở WordPress 4.0

September 5, 2014, 2:27 am

Nếu bạn đã cập nhật lên WordPress 4.0 thì có thể sẽ thấy không hiển thị tiếng Việt nếu như sử dụng plugin Codestyling Localizati0n hoặc các file ngôn ngữ trong theme/plugin.

Thực chất cái này không phải lỗi mà chỉ là sự thay đổi của WordPress mà thôi, bởi vì bây giờ họ không dùng hằng số WP_LANG trong file wp-config.php để xác định ngôn ngữ nữa mà sẽ lưu trong database.

Cách sửa lỗi

Sửa trong Settings

Đầu tiên bạn vào Settings -> General, kéo xuống dưới phần Site Language và chọn loại ngôn ngữ mà bạn đang dùng rồi ấn Save lại là xong.

Hướng dẫn dùng w3 total cache thachpham
Trường hợp nó không hiển thị loại ngôn ngữ mà bạn cần dùng thì hãy vào database để sửa nhé.

Sửa trong Database

Bạn vào PhpMyAdmin -> chọn database đang sử dụng và ấn Search.

Hướng dẫn dùng w3 total cache thachpham
Sau thiết lập tìm kiếm như ở dưới.
Hướng dẫn dùng w3 total cache thachpham

Nghĩa là bạn tìm kiếm với từ khóa WPLANG ở table wp_options. Sau đó ấn nút Go phía dưới. Bây giờ nó sẽ hiển thị ra kết quả tìm kiếm, ấn nút Browse tại table wp_options.

Hướng dẫn dùng w3 total cache thachpham
Và ấn Edit ở tùy chọn WPLANG.

Hướng dẫn dùng w3 total cache thachpham

và thay đổi option_value về thành mã ngôn ngữ mà bạn cần áp dụng. Ấn Go để lưu lại kết quả.

Hướng dẫn dùng w3 total cache thachpham

Xong rồi đó, bạn thử làm đi xem có được không nhé.

Kể từ phiên bản 4.0, nếu bạn muốn thay đổi mã ngôn ngữ trong website thì phải dùng cách này.

Bài viết Sửa lỗi không hiển thị ngôn ngữ đã dịch ở WordPress 4.0 được giữ bản quyền bởi Thach Pham

Quản trị hình ảnh trên WordPress toàn tập

September 5, 2014, 7:00 am

Việc lưu trữ và quản lý các file hình ảnh có trên website không phải là một vấn đề lớn đối với bạn nếu website bạn chỉ có số lượng vài trăm tấm ảnh. Thế nhưng đợi đến lúc bạn tự nhận ra mình phải bắt tay vào việc tối ưu lại hình ảnh, tìm cách quản lý nó thì chắc cũng trễ rồi, dĩ nhiên lúc đó bạn sẽ cực hơn rất nhiều.

Do đó, để giúp cho những người mới hiểu hơn về tính năng Media Library trên WordPress thì mình xin viết một bài đầy đủ về những gì bạn cần biết liên quan đến việc quản lý hình ảnh trên website.

I. Kiểm soát các size ảnh có trên website

1.1) Tìm hiểu size ảnh

Trong WordPress, để tối ưu hình ảnh hiển thị thì nó có hỗ trợ chức năng tự động cắt một tấm ảnh ra nhiều size khác nhau, dĩ nhiên mỗi size ảnh sẽ là một tấm ảnh.

Mặc định WordPress có 3 size ảnh như thế này:

Hướng dẫn dùng w3 total cache thachpham

Và điều này có nghĩa là một tấm ảnh sẽ có 4 files khác nhau. Hãy cùng mở thư mục /wp-content/uploads ra mà xem nhé.

Hướng dẫn dùng w3 total cache thachpham

Thế nó sinh ra thì nó sẽ được sử dụng như thế nào?

Mặc định WordPress có 3 size hình ảnh được tao ra bởi hàm

/*

  • LƯU DỮ LIỆU TỪ FIELD NHẬP VÀO / add_action( 'personal_options_update', 'save_custom_user_field' ); add_action( 'edit_user_profile_update', 'save_custom_user_field' ); / Function để lưu field mà gửi vào database */ function save_custom_user_field( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
     update_user_meta( $user_id, 'diachi', $_POST['diachi'] );  
    update_user_meta( $user_id, 'facebook', $_POST['facebook'] );  
    
    }

21 với 3 key là:

  • thumbnail
  • medium
  • large

Nếu trong theme có hàm gọi file media tương ứng với tên size hoặc số size của nó thì nó sẽ tự được lôi ra, chẳng hạn như họ muốn lôi ảnh với size dạng thumbnail thì là:

cd /usr/local/src 1

Ngoài ra khi chèn ảnh vào bài, bạn cũng có thể lựa chọn size cần chèn để tránh chèn các ảnh to qua làm bài viết tải lâu hơn.

Hướng dẫn dùng w3 total cache thachpham

Nhìn chung chức năng này có một ưu điểm là khiến website bạn hiển thị ảnh gọn hơn, load nhẹ hơn.

1.2) Xóa size ảnh

Nhưng nó có một nhược điểm là về lâu dài khi nó tự sinh ra quá nhiều ảnh thì nó sẽ làm bạn tốn nhiều dung lượng ổ cứng hơn. Mình đã từng gặp một trường hợp giúp di chuyển dữ liệu WordPress từ máy chủ này sang máy chủ khác với dung lượng lên tới gần 30GB cho một website, dĩ nhiên toàn là ảnh.

Vậy thì làm sao để WordPress không sinh thêm ảnh ra nữa? Cách đơn giản nhất là bạn hãy vào Settings -> Media và đưa tất cả các thông số về 0 như trong ảnh dưới.

Hướng dẫn dùng w3 total cache thachpham

Đưa các tham số về 0 để tắt tự động sinh ra ảnh.

Nhưng không chỉ dừng lại ở đó. Nếu bạn có cài thêm một số plugin mà trong đó họ có khai báo một size ảnh mới thì nó sẽ tiếp tục tạo ảnh ra, chẳng hạn như plugin NextGen Gallery, Yet Another Related Posts,…Vậy làm thế nào để ngăn chặn chúng không sinh thêm size ảnh nữa? Đó là hãy cài plugin AJAX Thumbnail Rebuild.

Sau đó bạn truy cập vào phần Tools -> Rebuild Thumbnail là bạn sẽ thấy danh sách các key size ảnh đang có trên website là các ký tự in nghiêng.

Hướng dẫn dùng w3 total cache thachpham

Bạn chèn đoạn code sau vào file functions.php trong theme để vô hiệu hóa nó.

cd /usr/local/src 2

Nhớ thay đổi lại tên key của size ảnh cho phù hợp với bạn và mỗi size là một dòng unset nhé. Kể từ bây giờ khi bạn upload ảnh lên thì nó sẽ không tự cắt ra các size mà bạn đã xóa nữa.

Thế khi xóa size ảnh rồi thì các file ảnh cũ của size đó có được xóa không? Câu trả lời đơn giản là không, nhưng bạn có thể xóa nó. Hãy xem tiếp phần 1.3.

1.3) Xóa các ảnh không sử dụng

Ảnh không sử dụng ở đây nghĩa là file ảnh đó không được đính kèm vào bài viết nào cả. Để xóa các ảnh đó, bạn có thể sử dụng plugin miễn phí Image Cleanup.

Cách sử dụng plugin Image Cleanup bạn có thể tham khảo ở bài này.

Mặc định WordPress không chỉ cho phép bạn chèn từng tấm ảnh vào bài mà còn hỗ trợ bạn tạo cho nó một gallery riêng – nghĩa là sẽ hiển thị nhiều hình ảnh cùng lúc trong bài viết.

Để tạo Gallery, bạn ấn vào nút Add Media trên khung soạn thảo và chọn Create Gallery, sau đó chọn các tấm ảnh cần thêm vào gallery và ấn nút Create New Gallery.

Hướng dẫn dùng w3 total cache thachpham

Sau khi tạo gallery, bạn có thể thay đổi thứ tự hình ảnh và ấn nút Insert Gallery phía dưới là xong. Sau khi chèn gallery vào bài thì ảnh sẽ hiển thị theo dạng thế này.

Hướng dẫn dùng w3 total cache thachpham

Hình ảnh hiển thị dạng grid.

Nếu bạn muốn có thêm hiệu ứng click vào sẽ mở hình ảnh với size lớn bằng popup thì cài thêm plugin Responsive Lightbox.

Nhưng gallery này chỉ là dạng cơ bản mà thôi, nếu bạn muốn chèn gallery chuyên nghiệp với nhiều tùy chọn hơn như hiển thị slide thì bạn nên dùng plugin NextGen Gallery mà mình đã hướng dẫn tại đây.

III. Tối ưu dung lượng hình ảnh

Hình ảnh trên web có thể sẽ có dung lượng và chất lượng ảnh vượt quá nhu cầu sử dụng của bạn mà trong khi đó bạn có thể giảm dung lượng hình ảnh xuống mà không bị mất đi chất lượng ảnh.

Để làm việc đó hoàn toàn tự động, bạn cần cài plugin EWWW Image Optimizer hoàn toàn miễn phí và có hỗ trợ giảm dung lượng ảnh hàng loạt, đồng thời khi bạn upload ảnh lên bài thì nó cũng sẽ tự giảm dung lượng luôn.

Hướng dẫn dùng w3 total cache thachpham

Cái hay của plugin này đó là có hỗ trợ nén ảnh thông qua dịch vụ Cloud của họ nếu host của bạn yếu không thể nén ảnh được. Khi sử dụng tính năng cloud, bạn cần phải trả một số tiền nhỏ hàng tháng nhưng bù lại tài nguyên của máy chủ sẽ không bị tiêu hao mỗi lần nén.

IV. Sửa ảnh trực tiếp trên WordPress

Trong WordPress có rất nhiều tính năng giúp bạn sửa ảnh trực tiếp ngay trên website mà có thể nhiều người đã bỏ qua. Để sử dụng chức năng này, bạn vào Media -> chọn một tấm ảnh bất kỳ và ấn Edit.

Tại đây bạn có thể đảo chiều ảnh, crop ảnh hoặc thay đổi kích thước của ảnh.

Hướng dẫn dùng w3 total cache thachpham

Sau khi sửa xong và save lại, WordPress sẽ tự động xuất ra một tấm ảnh là kết quả sau khi chỉnh sửa.

V. Tăng tốc thời giạn load ảnh với cache

Hình ảnh đa phần trên website sẽ không cần chỉnh sửa mà chỉ upload lên hoặc xóa đi, nên tốt nhất là bạn nên thiết lập cache trình duyệt cho các file ảnh để khách truy cập vào website nhanh hơn ở lần truy cập thứ 2 trở đi do cache đã được lưu trong máy tính ở quãng thời gian nhất định.

Để làm việc này trên host, bạn mở file .htaccess ở thư mục gốc website ra và chèn đoạn dưới đây vào:

cd /usr/local/src 3

Số 2592000 nghĩa là số giây sẽ được lưu lại trong cache của trình duyệt và nó sẽ tự làm mới sau quãng thời gian này. Bạn có thể đặt một con số khác lâu hơn.

Lời kết

Đó là những kinh nghiệm của mình trong việc tối ưu hóa quy trình quản lý và sử dụng hình ảnh trên website WordPress và hy vọng nó cũng sẽ có ích cho bạn. Hãy nhớ rằng mặc dù lưu hình ảnh trên host sẽ làm bạn tốn băng thông và dung lượng hơn nhưng nó lại an toàn cho bạn thay vì sử dụng các liên kết hình ảnh trỏ ra bên ngoài vì không ai biết được các ảnh đó có bị gì sau này hay không. Hơn nữa, các cấu hình hosting hiện đại bây giờ đều thừa khả năng để cung cấp dung lượng và băng thông cho một số lượng hình ảnh khá lớn nên bạn không cần lo lắng.