从插件获取插件下载URL

时间:2011-08-10 作者:jjeaton

是否有方法获取当前未安装插件的插件段塞(例如“akismet”),并以某种方式检索当前版本的下载URL(例如http://downloads.wordpress.org/plugin/akismet.2.5.3.zip\')?

这是我正在尝试开发的一个命令行脚本,它将支持从命令行安装插件。

2 个回复
SO网友:Wyck

我完全忘记了插件slug是否是获取url的可靠方法,这可能在大多数情况下都是因为插件的命名方式。

您可以在wordpress上查询api。org获取插件xml文件,该文件还包含下载链接。

例如:

$plugin_slug = \'akismet\'; 
$return_plugin_info = "http://api.wordpress.org/plugins/info/1.0/$plugin_slug.xml"
它将返回一个XML文件,您可以解析下载链接,该文件位于<download_link type="string">the link...akismet.zip</download>

SO网友:Suneel Kumar

我想我迟到了,但根据新的指导方针,我发现这是最好的解决方案

   // Set the arguments. For brevity of code, I will set only a few fields.
    $args = array(
        \'slug\' => \'akismet\', // or any plugin slug
        \'fields\' => array(
            \'version\' => true
        )
    );

    // Make request and extract plug-in object. Action is query_plugins
    $response = wp_remote_post(
        \'http://api.wordpress.org/plugins/info/1.0/\',
        array(
            \'body\' => array(
                \'action\' => \'plugin_information\',
                \'request\' => serialize((object)$args)
            )
        )
    );
    //
    if ( !is_wp_error($response) ) {
        $returned_object = unserialize(wp_remote_retrieve_body($response));   

        if ($returned_object) {
            $downloaded = $returned_object->downloaded;
            print_r($downloaded);
        }
        else {
            // Response body does not contain an object/array
            echo "An error has occurred.";
        }
    }
    else {
        // Error object returned
        echo "An error has occurred";
    }

结束

相关推荐

Where are plugins located

我通常通过FTP下载和安装插件,但我已经从web界面安装了一些插件。我正在尝试将WP从远程移动到本地,我得到一个空白的WP管理屏幕。我认为是我的一个插件导致了这个问题。我已将wp-content/plugins重命名为wp-content/u-plugins,以禁用该文件夹中的所有插件。但我安装的插件没有出现在插件文件夹中,我认为这是导致wp管理屏幕空白的原因。请告知。谢谢