Tutorial Quản lý, điều khiển 404 trong Wordpress

Thảo luận trong 'Wordpress' bắt đầu bởi babyinternet, 15/9/16.

By babyinternet on 15/9/16 lúc 00:06
  1. babyinternet

    babyinternet Administrator

    Tham gia ngày:
    4/7/08
    Bài viết:
    4,643
    Đã được thích:
    1,545
    Điểm thành tích:
    113
    Nơi ở:
    [}{]e[][]
    Có bao giờ bạn tự hỏi 404 trong Wordpress vận hành theo cơ chế nào và làm thế nào để có thể tự điều khiển lỗi 404 trong Wordpress theo ý mình ? Bài viết này sẽ chia sẻ với bạn một vài kiến thức hữu ích khi bạn cần làm chủ trang 404.

    Cơ chế 404 trong Wordpress
    Khi một URL được gửi đến website, việc đầu tiên hệ thống WordPress của bạn sẽ làm đó là phân tích chuỗi URL này và quyết định nội dung nào sẽ được hiển thị ra cho người dùng. WordPress sẽ lần lượt tìm kiếm Post, Page, taxonomies tương ứng với thứ nội dung cần thiết mà người dùng yêu cầu thông qua URL.
    Đó là trường hợp thông thường, còn nếu một dữ liêu nào đó mà người dùng yêu cầu thông qua URL không được tìm thấy - dĩ nhiên cơ chế 404 Not Found sẽ được kích hoạt - cơ chế này sẽ chuyển hướng người dùng bằng cách thực hiện một redirect và gọi trang 404.php trong giao diện tương ứng mà bạn sử dụng.

    Hành động này không những báo cho người dùng một thông tin về việc trang của họ không được tìm thấy, nó còn báo với công cụ tìm kiếm rằng nội dung này không tồn tại và deindex các dữ liệu cũ.

    [​IMG]

    Điều khiển 404

    Hành động chuyển hướng đến 404.php này được WordPress thực hiện thông qua action template_redirect. Đại loại nó như thế này:

    PHP:
    do_action('template_redirect');
    Nếu bạn muốn can thiệp vào việc chuyển hướng, chúng ta có thể can thiệp vào action này để thực hiện một công việc nào đó.

    Đoạn mã dưới đây mình thực hiện việc ghi log những URL mắc lỗi 404. Dĩ nhiên, việc này chỉ thực hiện khi lỗi 404 phát sinh trên trang.

    PHP:
    function log_404_error()
    {
        if( 
    is_404() )
        {
            global 
    $wp_query;
     
            
    // Custom permalinks by post name
            
    if(!empty($wp_query->query['name']))
            {
                
    $this->log_url$wp_query->query['name'] );
            }
            
    // Search by post id
            
    else if (!empty($wp_query->query['p']))
            {
                
    $this->log_url$wp_query->query['p'] )
            }
            
    // Search by category
            
    else if(!empty($wp_query->query['category_name']))
            {
                
    $this->log_url$wp_query->query['category_name'] )
            }
        }
    }
    add_action('template_redirect', array($this'log_404_error') );
    Thay đổi 404.php bằng một trang khác:
    Nếu bạn không thích trang 404.php trong theme được sử dụng làm mặc định khi phát sinh lỗi 404, chúng ta có thể sử dụng một trang khác có giá trị hơn để hiển thị khi phát sinh lỗi này. Để làm điều này, chúng ta sẽ can thiệp vào filter filter template_include như sau:
    PHP:
    add_filter'template_include''portfolio_page_template'99 );
     
    function 
    portfolio_page_template$template )
    {
        if ( 
    is_page'portfolio' )  )
        {
            
    $new_template locate_template( array( 'portfolio-page-template.php' ) );
            if ( 
    '' != $new_template )
            {
                return 
    $new_template ;
            }
        }
     
        return 
    $template;
    }
    Bài này mang tính chất hướng dẫn và bao quát kiến thức cho các bạn làm dev, chống chỉ định đối với các bạn không biết PHP là gì và chưa bao giờ mò code Wordpress nha.

    Thông cảm :D
     

Bình luận

Thảo luận trong 'Wordpress' bắt đầu bởi babyinternet, 15/9/16.

Chia sẻ trang này