Tạo danh sách Plugin cần cài đặt khi kích hoạt Theme

Khi bạn phát triển Theme WordPress cho dự án hoặc khách hàng, việc yêu cầu cài các Plugin cần thiết là điều quan trọng để đảm bảo mọi tính năng hoạt động ổn định. Bài viết này sẽ hướng dẫn bạn sử dụng thư viện TGM Plugin Activation để thực hiện việc đó.

Tạo danh sách Plugin cần cài đặt khi kích hoạt Theme

Thư viện TGM Plugin Activation

Đầu tiên, bạn cần tải thư viện TGM Plugin Activation.

Tải về

Sau khi tải về, bạn sao chép tập tin class-tgm-plugin-activation.php vào thư mục bất kì trong Theme của bạn. Ví dụ mình sao chép vào thư mục inc, sau đó gọi lại trong functions.php.

include_once('inc/class-tgm-plugin-activation.php');

Khai báo các Plugin cần thiết

Cũng tại functions.php, các bạn thêm đoạn mã sau. Các bạn có thể tùy chỉnh danh sách Plugin tại biến $plugins nhé.

/**
 * Khai báo các Plugin cần thiết
 */
add_action( 'tgmpa_register', 'my_theme_register_required_plugins' );
function my_theme_register_required_plugins() {
    $plugins = array(
            array(
                'name'          => 'Advanced Custom Fields',
                'slug'          => 'advanced-custom-fields',
                'version'       => '6.3.12',
                'required'      => true
            ),
            array(
                'name'          => 'Advanced Database Cleaner',
                'slug'          => 'advanced-database-cleaner',
                'version'       => '3.1.5',
                'required'      => false
            ),
            array(
                'name'          => 'Antispam Bee',
                'slug'          => 'antispam-bee',
                'version'       => '2.11.7',
                'required'      => false
            ),
            array(
                'name'          => 'Classic Editor',
                'slug'          => 'classic-editor',
                'version'       => '1.6.7',
                'required'      => true
            ),
            array(
                'name'          => 'Clean Image Filenames',
                'slug'          => 'clean-image-filenames',
                'version'       => '1.5',
                'required'      => false
            ),
            array(
                'name'          => 'Index WP MySQL For Speed',
                'slug'          => 'index-wp-mysql-for-speed',
                'version'       => '1.5.2',
                'required'      => false
            ),
            array(
                'name'          => 'Index WP Users For Speed',
                'slug'          => 'index-wp-users-for-speed',
                'version'       => '1.1.9',
                'required'      => false
            ),
            array(
                'name'          => 'Manage Notification E-mails',
                'slug'          => 'manage-notification-emails',
                'version'       => '1.8.6',
                'required'      => false
            ),
            array(
                'name'          => 'Modern Image Formats',
                'slug'          => 'webp-uploads',
                'version'       => '2.5.0',
                'required'      => false
            ),
            array(
                'name'          => 'Nextend Social Login',
                'slug'          => 'nextend-facebook-connect',
                'version'       => '3.1.17',
                'required'      => false
            ),
            array(
                'name'          => 'Redis Object Cache',
                'slug'          => 'redis-cache',
                'version'       => '2.5.4',
                'required'      => false
            ),
            array(
                'name'          => 'Simple Cloudflare Turnstile',
                'slug'          => 'simple-cloudflare-turnstile',
                'version'       => '1.30.0',
                'required'      => false
            ),
            array(
                'name'          => 'Solid Security Basic',
                'slug'          => 'better-wp-security',
                'version'       => '9.3.6',
                'required'      => false
            ),
            array(
                'name'          => 'Speculative Loading',
                'slug'          => 'speculation-rules',
                'version'       => '1.4.0',
                'required'      => false
            ),
            array(
                'name'          => 'The SEO Framework',
                'slug'          => 'autodescription',
                'version'       => '5.1.2',
                'required'      => false
            ),
            array(
                'name'          => 'Ultimate Member',
                'slug'          => 'ultimate-member',
                'version'       => '2.10.1',
                'required'      => true
            ),
            array(
                'name'          => 'Ultimate Member - Online',
                'slug'          => 'um-online',
                'version'       => '2.2.2',
                'required'      => false
            ),
            array(
                'name'          => 'Ultimate Member - Optimize and Color',
                'slug'          => 'um-optimize',
                'version'       => '1.3.3',
                'source'        => 'https://github.com/umdevelopera/um-optimize/archive/master.zip',
                'required'      => false
            ),
            array(
                'name'          => 'W3 Total Cache',
                'slug'          => 'w3-total-cache',
                'version'       => '2.8.6',
                'required'      => false
            ),
            array(
                'name'          => 'WP Crontrol',
                'slug'          => 'wp-crontrol',
                'version'       => '1.18.0',
                'required'      => false
            ),
            array(
                'name'          => 'WP Mail SMTP',
                'slug'          => 'wp-mail-smtp',
                'version'       => '4.4.0',
                'required'      => false
            )
        );
    $config = array(
            'id'           => 'tgmpa',
            'default_path' => '',
            'menu'         => 'tgmpa-install-plugins',
            'parent_slug'  => 'plugins.php',
            'capability'   => 'edit_theme_options',
            'has_notices'  => false,
            'dismissable'  => true,
            'dismiss_msg'  => 'Bạn cần cài các Plugin cần thiết để đảm bảo chủ đề hoạt động ổn định.',
            'is_automatic' => false,
            'message'      => '',
            'strings'      => array(
                'page_title'                      => __( 'Cài đặt các Plugin cần thiết', 'theme-slug' ),
                'menu_title'                      => __( 'Plugin cần thiết', 'theme-slug' ),
                'installing'                      => __( 'Đang cài Plugin: %s', 'theme-slug' ),
                'updating'                        => __( 'Đang cập nhật Plugin: %s', 'theme-slug' ),
                'oops'                            => __( 'Có gì đó không ổn với API của Plugin.', 'theme-slug' ),
                'notice_can_install_required'     => _n_noop(
                    'Chủ đề này yêu cầu Plugin sau: %1$s.',
                    'Chủ đề này yêu cầu các Plugin sau: %1$s.',
                    'theme-slug'
                ),
                'notice_can_install_recommended'  => _n_noop(
                    'Chủ đề này đề xuất Plugin sau: %1$s.',
                    'Chủ đề này đề xuất các Plugin sau: %1$s.',
                    'theme-slug'
                ),
                'notice_ask_to_update'            => _n_noop(
                    'Plugin sau đây cần được cập nhật lên phiên bản mới nhất để đảm bảo khả năng tương thích tối đa với chủ đề này: %1$s.',
                    'Các Plugin sau đây cần được cập nhật lên phiên bản mới nhất để đảm bảo khả năng tương thích tối đa với chủ đề này: %1$s.',
                    'theme-slug'
                ),
                'notice_ask_to_update_maybe'      => _n_noop(
                    'Có một bản cập nhật có sẵn cho: %1$s.',
                    'Có bản cập nhật cho các Plugin sau: %1$s.',
                    'theme-slug'
                ),
                'notice_can_activate_required'    => _n_noop(
                    'Plugin bắt buộc sau đây hiện không hoạt động: %1$s.',
                    'Các Plugin bắt buộc sau đây hiện không hoạt động: %1$s.',
                    'theme-slug'
                ),
                'notice_can_activate_recommended' => _n_noop(
                    'Plugin được đề xuất sau đây hiện không hoạt động: %1$s.',
                    'Các Plugin được đề xuất sau đây hiện không hoạt động: %1$s.',
                    'theme-slug'
                ),
                'install_link'                    => _n_noop(
                    'Bắt đầu cài đặt Plugin',
                    'Bắt đầu cài đặt các Plugin',
                    'theme-slug'
                ),
                'update_link'                     => _n_noop(
                    'Bắt đầu cập nhật Plugin',
                    'Bắt đầu cập nhật các Plugin',
                    'theme-slug'
                ),
                'activate_link'                   => _n_noop(
                    'Bắt đầu kích hoạt Plugin',
                    'Bắt đầu kích hoạt các Plugin',
                    'theme-slug'
                ),
                'return'                          => __( 'Quay lại Trình cài đặt Plugin cần thiết', 'theme-slug' ),
                'plugin_activated'                => __( 'Plugin đã được kích hoạt thành công.', 'theme-slug' ),
                'activated_successfully'          => __( 'Plugin sau đây đã được kích hoạt thành công:', 'theme-slug' ),
                'plugin_already_active'           => __( 'Không có hành động nào được thực hiện. Plugin %1$s đã hoạt động.', 'theme-slug' ),
                'plugin_needs_higher_version'     => __( 'Plugin chưa được kích hoạt. Cần có phiên bản cao hơn của %s cho chủ đề này. Vui lòng cập nhật Plugin.', 'theme-slug' ),
                'complete'                        => __( 'Tất cả Plugin đã được cài đặt và kích hoạt thành công. %1$s', 'theme-slug' ),
                'dismiss'                         => __( 'Bỏ qua thông báo này', 'theme-slug' ),
                'notice_cannot_install_activate'  => __( 'Có một hoặc nhiều Plugin bắt buộc hoặc được khuyến nghị để cài đặt, cập nhật hoặc kích hoạt.', 'theme-slug' ),
                'contact_admin'                   => __( 'Vui lòng liên hệ với người quản lý trang web này để được trợ giúp.', 'theme-slug' ),
                'nag_type'                        => ''
            )
        );
    tgmpa( $plugins, $config );
}

Gợi ý khi sử dụng

  • Những plugin từ GitHub cần có source URL và thường phải bật cài từ file zip.
  • Plugin có required => true sẽ bắt buộc người dùng cài và kích hoạt trước khi sử dụng theme.
  • Nếu bạn viết theme thương mại hoặc làm dịch vụ, nên để has_notices => true để người dùng biết cần làm gì.

Kết luận

TGM Plugin Activation giúp bạn tự động hóa quy trình cấu hình môi trường WordPress khi dùng theme. Bạn có thể dùng cho dự án cá nhân, khách hàng, hoặc bán theme đều phù hợp.

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

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...