Các chiến lược để thực hiện tải bổ sung có chọn lọc


7

Tôi đang cố gắng tìm ra một số loại cơ chế để tải plugin theo yêu cầu, tùy thuộc vào url của trang, để cải thiện hiệu suất.

Mối quan tâm chính của tôi là tôi có một số cuộc gọi admin-ajax.php đang lặp lại trong khi người dùng đang hoạt động trên trang. Tôi đã thử định hình các cuộc gọi này và phát hiện ra rằng phần lớn các plugin được tải cho cuộc gọi ajax là không cần thiết.

Mặc dù tôi có thể sử dụng is_admin()để xác định cuộc gọi ajax, tôi muốn giữ nguyên WordPress và mã plugin. Thêm vào đó, is_admin()không phân biệt giữa bảng gọi ajax và bảng quản trị.

Tôi đã xem xét thủ tục tải plugin. Tôi chỉ thấy 'muplugins_loaded', 'plugins_loaded'hành động, không có bộ lọc để chạm vào quá trình tải. Tôi đã kiểm tra wp_get_active_and_valid_pluginsvà có vẻ như cách duy nhất để thay đổi tải plugin là update_option('active_plugins')rõ ràng, đây không phải là một lựa chọn khả thi. Những thứ khác được mã hóa cứng.

(Tôi muốn đề cập đến rằng đây Plugin http://wordpress.org/extend/plugins/selective-loading/ sử dụng update_optionphương pháp, mà theo ý kiến của tôi là chỉ thích hợp trong một môi trường phi ajax, hoặc nếu không thì tùy chọn thay đổi wouldn 't là nguyên tử.)

Tôi đang tự hỏi nếu vẫn còn một số cách để thực hiện tải plugin chọn lọc?


Cho rằng plugin tải chọn lọc dựa trên cơ sở tải URL vào trang web, nó cũng có thể sử dụng được với AJAX, có thể sai.
user2108948

Câu trả lời:


7

Bộ lọc option_active_plugins. Bạn có thể thay đổi kết quả get_option()ở đây mà không thực sự thay đổi cơ sở dữ liệu.

if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
    add_filter( 'option_active_plugins', 'disable_plugins_temporary' );

function disable_plugins_temporary( $plugins )
{
    // unset plugins you don't need, then

    return $plugins;
}

Lý lịch

wp_get_active_and_valid_plugins()các cuộc gọi get_option( 'active_plugins', array() )để có được các plugin hoạt động. Trong get_option( $option, $default = false )chúng tôi tìm thấy bộ lọc này:

return apply_filters( 'option_' . $option, maybe_unserialize( $value ) );

Vì vậy, tên kết quả cho bộ lọc của chúng tôi là option_active_plugins.


0

Tôi không chắc liệu điều này có giúp bạn với cuộc gọi ajax của bạn hay không, nhưng Plugin Organizer là một plugin được hỗ trợ tốt cho phép tải có chọn lọc các plugin khác dựa trên URL. Nó hoạt động tuyệt vời trên trang web của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.