WordPress.org API-获取插件作者喜爱的插件

时间:2012-05-17 作者:Chris_O

WordPress最近增加了一些内容。org插件库。最值得注意的是插件页面和作者简介页面的更改,现在显示authors favorite plugins.

我想创建一个边栏小部件插件,显示一个插件作者的收藏夹。我知道如何使用API获取插件统计数据,并且已经阅读了DD32\'s API Docs 但我不相信文档存在于概要文件中,或者甚至不存在概要文件API。

我试图使用wp_remote_get 我可以从个人资料页面获取正文html,但还没有尝试解析它,因为这似乎是一种混乱的处理方式。如果我能得到XML或json格式的概要文件,那就太好了。

我是否缺少任何方法,或者是否存在配置文件API?

编辑:

好的,我有一个使用SimpleHTML Dom解析器的github测试版。我不认为我能获得星级评级,但我对没有API的第一次测试结果很满意

WordPress。org不允许内容刮取,并将禁止您(通过@otto)。因此,在发布公共API之前,这是不可能的。

2 个回复
最合适的回答,由SO网友:Chris_O 整理而成

最受欢迎的插件已添加到WordPress中。组织API。3.5中有一个新功能,允许您从插件安装程序访问收藏夹。

看见http://core.trac.wordpress.org/ticket/22002 有关如何在core中使用它的信息。

API允许您检索包含每个插件的对象,该插件的名称、描述、作者、分级、最后更新日期、更改日志、稳定版本与wp版本一起检索对象http://api.wordpress.org/plugins/info/1.0/ 使用wp\\u remote\\u post传递一组参数,包括“query\\u 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))) );
在创建一个干净的对象之前,需要进行一些错误处理和其他解析。下面是一个示例函数,它将返回一个保存所有插件详细信息的干净对象。

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&#8217;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&#8217;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 );
    }
用法此示例用法将为您提供一个无序的最喜爱插件列表,以及指向dot org上插件的链接、指向作者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>\';

结果

enter image description here

来自我最喜欢的插件的小部件屏幕截图小部件插件:http://wordpress.org/extend/plugins/favorite-plugins-widget/

SO网友:Ipstenu

还没有。

奥托周三说“很快”。但他这个周末去了烧烤,所以“很快”可能是“这个月”。)

编辑:

Otto42:@Ipstenu@EricMann我有代码可以做到这一点,但尚未部署。关于最佳方式的一些争论。它最终会在那里。

结束

相关推荐

设置API和参数中传递的数据

在设置API的一个示例中,有一个输入和回调函数来清理/验证此输入的结果:这是输入:echo \"<input id=\'text_string\' name=\'boj_myplugin_options[text_string]\' type=\'text\' value=\'$text_string\' />\"; 这是回调函数:function boj_myplugin_validate_options( $input ) { $valid[\'text_stri