it-swarm.com.de

Plugin-Informationen von mehreren externen Sites abrufen

Ich möchte ein Dashboard mit verschiedenen Plugins erstellen, die ich auf mehreren Websites verwende. Ich kann get_plugins () verwenden, um die gewünschten Informationen auf jeder Site zu sammeln. Wie kann ich diese Daten jedoch von außen zugänglich machen? Ist das möglich? Was wäre der beste Weg, dies zu tun?

2
eleclair

Vor allem anderen:

Stellen Sie wirklich sicher, dass Ihr Endpunkt zum Abrufen dieser Informationen einigermaßen sicher ist. (z. B. mit SSL und einer gewissen Authentifizierung wie einem Kennwort) Wenn Sie die Informationen verlieren, welche Plug-ins auf einer Site installiert sind, können Hacker möglicherweise angreifen.


Ich werde Ihnen keine vorgefertigte Lösung anbieten, sondern zwei verschiedene Lösungsansätze skizzieren: Push und Pull. Push bedeutet, dass Ihre Sites ihre Plugins an das Dashboard melden, während Pull bedeutet, dass Ihre Dashboards diese Informationen aktiv von Ihren Sites erhalten.

Außerdem zeige ich Ihnen nur die WP Seite der Dinge. Wie Sie mit Ihrem Dashboard umgehen, ist eine völlig separate Angelegenheit und passt wahrscheinlich auch nicht gut zu dieser Site.

Auf geht's:

Drücken

Mit einem WP-Cron können Sie festlegen, dass auf einer Site in regelmäßigen Abständen Aktionen ausgeführt werden. In unserem Fall könnten wir zum Beispiel eine Aufgabe planen, die die Liste der installierten Plugins abruft und sie an Ihr Dashboard meldet (Code enorm vereinfacht):

// Add the action that does the actual reporting
add_action( 'hourly_report', 'report_plugins' );

// Schedule this action hourly
wp_schedule_event( time(), 'hourly', 'hourly_report' );

// This function does the actual work
function report_plugins(){

    //Get plugin data
    $plugins = get_plugins();

    //create the data you want to send using $plugins
    $args = ...

    // Post the data to your dashboard
    wp_remote_post( $dashboard_url, $args );
}

Ziehen

Eine andere Möglichkeit ist, einen AJAX -Endpunkt zu erstellen, um die Plug-in-Daten von einer Site aktiv abzurufen. Dies würde ungefähr in diese Richtung gehen (wieder Code enorm vereinfacht):

// Add the AJAX handler
add_action( 'wp_ajax_nopriv_plugin_data', 'return_plugin_data' );

function return_plugin_data(){
     //Again I want to emphasize that you need to ensure the user has the right to access this data.

     //Get plugin data
     $plugins = get_plugins();

     //Encode and return the plugin data
     echo json_encode($plugins);
     die();
}

Ich hoffe, dies hilft Ihnen beim Einstieg. Lassen Sie mich wissen, wenn konzeptionell etwas unklar ist.

1
kraftner