Subdomain trong WordPress

Trong WordPress vấn đề Subdomain có vẻ phức tạp hơn Drupal, nhưng lại đơn giản hơn Joomla, chúng ta chỉ cần hiểu được bản chất của Query trong nó là sẽ giải quyết được nhanh chóng vấn đề này.

*** Đã có plugin mới cóng, không một chút lỗi, tham khảo WP Super Subdomains mình vừa viết xong nhé !

Thứ nhất, chúng ta cần lưu ý là bất kỳ một query nào cũng chạy về file index, hãy thử mở .htaccess lên là bạn sẽ hiểu được.

Như vậy muốn tạo các subdomain thì chúng ta cần phải can thiệp vào class xử lý query của WordPress chính là $wp_query, Class này các bạn có thể đục nó ra để hiểu hơn, ngoài ra các bạn chỉ cần dump dữ liệu trong filter rewrite_rule_array là sẽ hiểu được cơ chế của nó.

Thứ hai, can thiệp vào từng hook của WordPress, WordPress có các hook khác nhau để can thiệp vào class này, kiểu như post_rewrite_rule là chứa các quy tắc của WordPress cho phần post, ví dụ:

[/(.*).html] => index.php?name=$match[1]

Name chính là slug của post, vậy nếu ta muốn làm subdomain cho wordpress thì chúng ta hãy chọn: 1 là chọn category làm sub, hai là chọn page làm sub, ba nữa có thể chọn tag làm sub, hoặc bất cứ cái gì khác nhưng đừng chọn post làm sub, bạn không muốn sub của mình nhiều tới nỗi không thể đếm nổi nhỉ 😀

Thử làm việc với category, bạn sẽ hook vào category_rewrite_rule hoặc cái gì đó tương tự, mình không nhớ hàm này lắm vì mình làm lâu rồi, sau đó ta sẽ unset rule mặc định của WordPress và thêm vào:

$rule[‘$’] => index.php?category_name=$slug

Ở đây chúng ta không dùng match nữa, mà ta dùng slug, slug chính là subdomain, giờ wordpress đã có thể hiểu được sub.domain.com chính là category slug rồi, tiếp theo ta chỉ cần chỉnh lại đường link của category nữa là xong việc.

Đây là bài viết tôi nói đại khái cho các bạn hiểu được nguyên tắc thôi, các bạn có thể xem thêm bài viết của tôi trên Thạchpham.com tại đây để hiểu rõ hơn: http://thachpham.com/wordpress/wordpress-development/tao-subdomain-category-user-bang-code.html

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

TÁC GIẢ:

Tôi là Jam, thâm niên 7 năm thiết kế website và làm SEO. Hãy theo dõi blog của tôi để nhận được nhiều chia sẻ thú vị xung quanh chủ đề công nghệ.

Có 6 bình luận !

  1. anh có thể hướng dẫn chi tiết từng bước để chuyển tất cả tag và category trong wordpress thành sub không ạ. có cả hình ảnh và chỉ rõ file nào cần sửa chỗ nào nữa càng tốt. thanks anh.

  2. đọc bài nãy mấy lần rồi nhưng thực sự là khó cho người không biết về code như em. http://thachpham.com/wordpress/wordpress-development/tao-subdomain-category-user-bang-code.html

    giá mà anh viết 1 bài hướng dẫn chuyển category và tag thành subdomain nhỉ, chỉ cả file .php nào cẩn chỉnh ở đâu chỗ nào .
    chứ e đọc qua chỉ biết là như thế chứ không biết thêm vào chỗ nào file gì,

    Đọc qua bài thì em thấy là :
    Bước 1 : cần chèn đoạn code này : http://i.imgur.com/BWDwvOV.jpg vào 1 file nào đó k biet có phải fiel fuction.php của theme k
    Bước 2 là: chèn đoạn code này vào file nào đó: http://i.imgur.com/gSVN5Z3.jpg
    Bước 3 là Chỉnh lại đường dẫn trong trang: sẽ chèn code này vào 1 file nào đó: http://i.imgur.com/nr5ToCS.jpg
    Bước 4 cài plugin WP PageNavi rùi chèn code $rules[“page/?([0-9]{1,})/?$”] = “index.php?” . $field . “=” . $slug vào đâu đó tiếp tục chèn thêm code này: add_filters(‘get_pagenum_link’, ‘_rewrite_pagenum’);
    function _rewrite_pagenum( $url ) {
    // bạn cần phải làm sao trả về đường dẫn sub.domain.com để plugin tự phân trang thêm page/x vào đường dẫn thôi …
    return $url;
    } vào 1 file nào đấy:.
    tiếp đền bước cuối chèn code này nữa vào 1 file nào đấy là xong. function rewrite_init () {

    if (!is_admin()) {

    if (function_exists(‘set_transient’)) {

    set_transient(‘rewrite_rules’, “”);

    update_option(‘rewrite_rules’, “”);

    } else {

    update_option(‘rewrite_rules’, “”);

    }

    }

    }

    add_action(‘init’, ‘rewrite_init’);

    Thực sự mong anh viết 1 bài chi tiết hướng dẫn cho những người mù code như em. thanks anh nhiều

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *