Làm cách nào để có được danh sách các plugin đang hoạt động trên blog wordpress của tôi theo chương trình?


13

Tôi có 2 blog, một blog là multisite và một blog thì không. Tôi muốn có một danh sách các plugin hoạt động trên cả hai blog để tôi có thể so sánh chúng. Trên blog nhiều trang, tôi muốn liệt kê các plugin được kích hoạt trên toàn mạng cũng như toàn trang.

Câu trả lời:


20

Các plugin được kích hoạt được lưu trữ trong bảng tùy chọn của Blog WordPress dưới khóa active_plugins

vì vậy bạn có thể sử dụng get_option('active_plugins'); từng blog và so sánh các mảng.


2
Thật đáng để thêm rằng get_plugins () sẽ cung cấp cho bạn tất cả các plugin bao gồm cả các plugin không hoạt động.
Charles Jaimet

13

Ở dạng Tiện ích Bảng điều khiển, một dành cho Bảng điều khiển Trang web Đơn và Trang web Mạng, một dành cho Bảng điều khiển Mạng nhiều trang.

/*
 * Single Site Dashboard Widget
 */
add_action('wp_dashboard_setup', 'wpse_54742_wp_dashboard_setup');

function wpse_54742_wp_dashboard_setup() {
    wp_add_dashboard_widget( 'wpse_54742_active_site_plugins', __( 'Active Plugins' ), 'wpse_54742_active_site_plugins' );
}

function wpse_54742_active_site_plugins() {
    $the_plugs = get_option('active_plugins'); 
    echo '<ul>';
    foreach($the_plugs as $key => $value) {
        $string = explode('/',$value); // Folder name will be displayed
        echo '<li>'.$string[0] .'</li>';
    }
    echo '</ul>';
}


/*
 * Multisite Dashboard Widget
 */
add_action('wp_network_dashboard_setup', 'wpse_54742_network_dashboard_setup');

function wpse_54742_network_dashboard_setup() {
    wp_add_dashboard_widget( 'wpse_54742_active_network_plugins', __( 'Network Active Plugins' ), 'wpse_54742_active_network_plugins' );
}

function wpse_54742_active_network_plugins() {
    /*
     * Network Activated Plugins
     */
    $the_plugs = get_site_option('active_sitewide_plugins'); 
    echo '<h3>NETWORK ACTIVATED</h3><ul>';
    foreach($the_plugs as $key => $value) {
        $string = explode('/',$key); // Folder name will be displayed
        echo '<li>'.$string[0] .'</li>';
    }
    echo '</ul>';


    /*
     * Iterate Through All Sites
     */
    global $wpdb;
    $blogs = $wpdb->get_results($wpdb->prepare("
        SELECT blog_id
        FROM {$wpdb->blogs}
        WHERE site_id = '{$wpdb->siteid}'
        AND spam = '0'
        AND deleted = '0'
        AND archived = '0'
    "));

    echo '<h3>ALL SITES</h3>';

    foreach ($blogs as $blog) {
        $the_plugs = get_blog_option($blog->blog_id, 'active_plugins'); 
        echo '<hr /><h4><strong>SITE</strong>: '. get_blog_option($blog->blog_id, 'blogname') .'</h4>';
        echo '<ul>';
        foreach($the_plugs as $key => $value) {
            $string = explode('/',$value); // Folder name will be displayed
            echo '<li>'.$string[0] .'</li>';
        }
        echo '</ul>';
    }
}

1
Điều này là nhiều hơn tôi yêu cầu nhưng thực sự đánh giá cao bạn dành thời gian để cung cấp câu trả lời chi tiết như vậy. Hy vọng, nó sẽ giúp người khác. Cảm ơn bạn.
mehulved

4

Danh sách các plugin, với các trang web được sử dụng (chỉ dành cho nhiều trang)

Nếu bạn muốn biết plugin nào hiện đang được kích hoạt và trên trang web nào, bạn có thể sử dụng một chức năng như thế đó:

function wpstars_list_active_plugins() {

  if ( function_exists( 'get_sites' ) && class_exists( 'WP_Site_Query' ) ) {

    echo "<table class='active-plugins'>";
    echo "<tr><th>Plugin name</th><th>Sites</th></tr>";

    $plugins = get_plugins();

    // Network activated
    $active_plugins = get_site_option('active_sitewide_plugins');
    foreach($active_plugins as $active_path => $active_plugin) {

      $plugins[$active_path]['Sites'] = "A,";
    }

    // Per site activated
    $sites = get_sites();
    foreach ( $sites as $site ) {

      $active_plugins = get_blog_option($site->blog_id, 'active_plugins');
      foreach($active_plugins as $active_plugin) {

        $plugins[$active_plugin]['Sites'] .= $site->blog_id . ",";
      }
    }

    foreach($plugins as $plugin) {

      echo "<tr><td>{$plugin['Name']}</td><td>{$plugin['Sites']}</td></tr>";
    }

    echo "</table>";
  }
}

1

WP-CLI chỉ là vé. Tôi đã sử dụng nếu vì quá nhiều thứ, tôi đã mất hết tính!

wp plugin list --status=active

Nếu bạn muốn, bạn có thể chạy các lệnh này trên máy cục bộ của mình bằng bí danh ...

Sau đó, bạn sẽ sử dụng chức năng @site

wp @all plugin list --status=active

hoặc là

wp @multisite list --status=active
wp @blog list --status=active
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.