web-dev-qa-db-fra.com

Obtenir des informations de plug-in de plusieurs sites en externe

J'aimerais créer un tableau de bord contenant les types de plug-ins que j'utilise sur plusieurs sites. Je suis en mesure d'utiliser get_plugins () pour rassembler les informations que je souhaite sur chaque site, mais comment puis-je rendre ces données accessibles de l'extérieur? Est-ce possible? Quelle serait la meilleure façon de s'y prendre?

2
eleclair

Avant toute chose:

Assurez-vous vraiment que votre ordinateur d'extrémité pour récupérer ces informations est raisonnablement sécurisé. (par exemple, en utilisant SSL et une authentification comme un mot de passe) La fuite d'informations sur les plugins installés sur un site peut constituer un point d'attaque pour les pirates.


Je ne vais pas vous proposer une solution toute faite, mais décrire deux approches différentes pour résoudre ce problème: Push and Pull. Push signifie que vos sites signalent leurs plugins au tableau de bord, tandis que pull signifie que vos tableaux de bord récupèrent activement ces informations de vos sites.

De plus, je vais seulement vous montrer le côté WP. La façon dont vous gérez les éléments de votre tableau de bord est une question complètement distincte et ne convient probablement pas non plus à ce site.

Alors on y va:

Pousser

En utilisant un WP-Cron , vous pouvez planifier la création d’un site à intervalles réguliers. Dans notre cas, nous pourrions par exemple planifier une tâche qui récupère la liste des plugins installés et les rapporte à votre tableau de bord (code extrêmement simplifié):

// 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 );
}

Tirer

Une autre option consiste à créer un noeud final AJAX pour obtenir activement les données de plug-in d'un site. Cela irait grosso modo dans ce sens (encore une fois, un code extrêmement simplifié):

// 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();
}

J'espère que cela vous aidera à commencer, laissez-moi savoir si quelque chose n'est pas clair sur le plan conceptuel.

1
kraftner