WordPress.org API – Holen Sie Plugin-Autoren Lieblings-Plugins

Das WordPress.org Plugin-Repository wurde kürzlich erweitert. Vor allem die Änderungen an der Plugin-Seite und der Autor-Profil-Seite, die jetzt ein Autoren-Lieblings-Plugins zeigt .

Ich möchte ein Sidebar-Widget-Plugin erstellen, das ein Plugin-Autoren-Favoriten anzeigt. Ich weiß, wie man die API benutzt, um plugin stats zu erhalten und DD32’s API Docs gelesen zu haben, aber ich glaube nicht, dass Dokumente in Profilen existieren oder wenn eine Profil API überhaupt existiert.

Ich habe versucht, wp_remote_get zu verwenden, und ich bin in der Lage, das body html von der Profilseite zu bekommen, habe aber noch nicht versucht, es zu analysieren und zu analysieren, da es ein Weg zu einem unordentlichen Weg zu sein scheint. Es wäre toll, wenn ich das Profil in XML oder JSON bekommen könnte.

Gibt es irgendwelche Methoden, die ich vermisse oder existiert eine Profil-API?

Bearbeiten:

Ok, ich habe eine Betaversion auf github mit dem SimpleHTML Dom Parser. Ich glaube nicht, dass ich in der Lage sein werde, die Sterne-Bewertungen zu bekommen, aber ich bin ziemlich glücklich mit den Ergebnissen, wenn man ohne API anfängt.

WordPress.org erlaubt kein Scraping von Inhalten und verbietet dich (via @otto). Das ist also ein Nein, bis eine öffentliche API veröffentlicht wird.

Solutions Collecting From Web of "WordPress.org API – Holen Sie Plugin-Autoren Lieblings-Plugins"

Die favorisierten Plugins wurden der WordPress.org API hinzugefügt. Es gibt eine neue function in 3.5, mit der Sie vom Installer des Plugins auf Ihre Favoriten zugreifen können.

Informationen darüber, wie es im Core verwendet wird, finden Sie unter http://core.trac.wordpress.org/ticket/22200 .

Mit der API können Sie ein Objekt abrufen, das alle Plugins enthält

  • Name
  • Beschreibung
  • Autor
  • Bewertung
  • letztes aktuelles Datum
  • Änderungsprotokoll
  • stabile Version
  • funktioniert mit der wp-version

Um das Objekt abzurufen

Rufen Sie http://api.wordpress.org/plugins/info/1.0/ auf, indem Sie wp_remote_post übergeben, indem Sie ein Array von Argumenten übergeben, einschließlich der Aktion “query_plugins” und den Benutzernamen von wp dot org, von dem die Favoriten abgerufen werden sollen.

 $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) ); 

Bevor Sie ein schönes sauberes Objekt haben, müssen Sie einige Fehlerbehandlung und andere Analyse durchführen. Hier ist eine Beispielfunktion, die ein nettes sauberes Objekt zurückgibt, das alle Details des Plugins enthält.

 function api( $action, $args ) { if ( is_array( $args ) ) $args = (object) $args; $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) ); if ( is_wp_error($request) ) { $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), $request->get_error_message() ); } else { $res = maybe_unserialize( wp_remote_retrieve_body( $request ) ); if ( ! is_object( $res ) && ! is_array( $res ) ) $res = new WP_Error('plugins_api_failed', __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ), wp_remote_retrieve_body( $request ) ); } return apply_filters( 'c3m_favorite_results', $res, $action, $args ); } 

Verwendung

Diese Beispielverwendung gibt Ihnen eine ungeordnete Liste von bevorzugten Plugins zusammen mit einem Link zum Plugin auf DotOrg, einem Link zum Autor uri und der Sternbewertung.

 $api_data = api( 'query_plugins', array( 'user' => 'my_dot_org_username' ) ); $api_plugins = $api_data->plugins; echo '
    '; foreach( $api_plugins as $plugin ) { $name = $plugin->name; ?>
  • < ?php echo esc_html( $name ); ?>
    < ?php _e('By: ') ?> < ?php echo links_add_target( $plugin->author, '_blank' ). '
    '; ?>
  • < ?php } echo '
';

Ergebnis

Bildbeschreibung hier eingeben

Widget screenshot von meinem Plugin “Lieblings Plugins Widget”: http://wordpress.org/extend/plugins/favorite-plugin-widget/

Noch nicht.

Otto sagte ‘bald’ am Mittwoch. Aber er ging dieses Wochenende zu einem BBQ, also ist ‘bald’ wahrscheinlich ‘Dieser Monat’. 😉

Bearbeiten:

Otto42: @Ipstenu @EricMann Ich habe Code, um das zu tun, aber noch nicht bereitgestellt. Manche debattieren über den besten Weg. Es wird irgendwann da sein.