最近WordPress.orgプラグインリポジトリにいくつか追加されました。最も注目に値するのは、プラグインページと作者のプロフィールページへの変更で、 authorsのお気に入りのプラグインが表示されます 。
プラグインの作者のお気に入りを表示するサイドバーウィジェットプラグインを作成したいです。 APIを使用してプラグインの統計情報を取得する方法を知っていて、また DD32のAPI Docs を読んでいますが、プロファイルがプロファイルに存在する場合、またはプロファイルAPIが存在する場合でも信じられません。
私はwp_remote_get
を使おうとしました、そして、私はプロフィールページからボディのhtmlを得ることができますが、それをそれをめちゃくちゃにする方法のように思われるのでまだそれを試みて解析しようとしませんでした。 XMLまたはjsonでプロファイルを取得できれば素晴らしいでしょう。
私が欠けている、またはプロファイルAPIが存在するというメソッドはありますか?
わかりました。私はSimpleHTML Domパーサーを使ってgithubにベータ版をアップしました。私は私が星評価を得ることができるとは思わないが、私はAPIなしで最初の試みとして結果にかなり満足している。
WordPress.orgはコンテンツの廃棄を許可しておらず、あなたを禁止します(@otto経由)。そのため、パブリックAPIがリリースされるまではこれで終わりです。
お気に入りのプラグインはWordPress.org APIに追加されました。 3.5には、プラグインインストーラからお気に入りにアクセスできるようにする新機能があります。
コアでの使用方法については、 http://core.trac.wordpress.org/ticket/22002 を参照してください。
Wp_remote_postを使用して http://api.wordpress.org/plugins/info/1.0/ への呼び出しを行います。お気に入りを取得する 'query_plugins'とwp dot orgのユーザー名を指定します。
$request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) );
Nice cleanオブジェクトを作成する前に、エラー処理やその他の解析を行う必要があります。これは、すべてのプラグインの詳細を保持するNiceクリーンオブジェクトを返す関数例です。
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 <a href="http://wordpress.org/support/">support forums</a>.' ), $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 <a href="http://wordpress.org/support/">support forums</a>.' ), wp_remote_retrieve_body( $request ) );
}
return apply_filters( 'c3m_favorite_results', $res, $action, $args );
}
この使用例では、ドットオルガンのプラグインへのリンク、作者のuriへのリンク、星の評価とともに、お気に入りのプラグインの順不同リストを提供します。
$api_data = api( 'query_plugins', array( 'user' => 'my_dot_org_username' ) );
$api_plugins = $api_data->plugins;
echo '<ul class="c3m-favorites">';
foreach( $api_plugins as $plugin ) {
$name = $plugin->name; ?>
<li><strong><a target="_blank" href="http://wordpress.org/extend/plugins/<?php echo $plugin->slug ?>/"><?php echo esc_html( $name ); ?></a></strong><br>
<div class="star-holder" title="<?php printf( _n( '(based on %s rating)', '(based on %s ratings)', $plugin->num_ratings ), number_format_i18n( $plugin->num_ratings ) ); ?>">
<div class="star star-rating" style="width: <?php echo esc_attr( str_replace( ',', '.', $plugin->rating ) ); ?>px"></div></div>
<em><?php _e('By: ') ?></em> <?php echo links_add_target( $plugin->author, '_blank' ). '<br>'; ?>
</li><?php
}
echo '</ul>';
私のお気に入りプラグインからのウィジェットのスクリーンショットウィジェットプラグイン: http://wordpress.org/extend/plugins/favorite-plugins-widget/
未だに。
オットーは水曜日に「間もなく」と言った。しかし、彼は今週末にバーベキューに行ったので、「すぐに」はおそらく「今月」です。 ;)
Otto42:@Ipstenu @EricMannそのためのコードはありますが、まだデプロイされていません。最良の方法についていくつかの議論があります。それは結局そこにあるでしょう。