如何获取WP网站的更新列表?

时间:2020-02-06 作者:DevBeppe

我需要得到所有更新的wp网站需要(核心,插件和主题)列表。我已经知道wp\\u get\\u update\\u data(),但它只返回数字。我需要获得例如:

插件1 |实际版本|新版本

插件2 |实际版本|新版本

主题1 |实际版本|新版本

wp |实际版本|新版本

如何将这些信息保存到一些数组中以使用它们?

编辑:我设法用我找到的做了这件事,但它不起作用,它打印出来只是为了测试

function data_report()
{
    // Get theme info
    $theme_data = wp_get_theme();
    $theme = $theme_data->Name . \' \' . $theme_data->Version;

    // Get plugins that have an update
    $updates = get_plugin_updates();

    // WordPress active plugins
    $fin_plug = "\\n" . \'-- WordPress Active Plugins\' . "\\n\\n";
    $plugins = get_plugins();
    $active_plugins = get_option(\'active_plugins\', array());
    foreach ($plugins as $plugin_path => $plugin) {
        if (!in_array($plugin_path, $active_plugins)) {
            continue;
        }
        $update = array_key_exists($plugin_path, $updates) ? \' (needs update - \' . $updates[$plugin_path]->update->new_version . \')\' : \'\';
        $fin_plug .= $plugin[\'Name\'] . \': \' . $plugin[\'Version\'] . $update . "\\n";
    }

}


add_action( \'wp_footer\', \'stampa_prova\' );

function stampa_prova (){   
        echo \'test\';
        $cospi = data_report();
        echo $cospi;
}

3 个回复
SO网友:Antti Koskinen

在“管理”视图中,可以使用以下函数获取更新数据。

如果您想构建自己的功能,那么您可以从站点瞬态中获取更新相关数据update_themes, update_plugins, 和update_core. 然后,您可以将插件和主题瞬态与您可以使用的主题和插件阵列进行比较wp_get_themes()get_plugins(). 以上函数或多或少是这些瞬态和函数的包装。

看看函数的源代码,看看WP是如何处理这些东西的。

SO网友:Gendrith

安蒂·科斯基宁的回答很好。它帮助我创建了一个函数来获取自定义API端点的插件信息,我希望它可以帮助其他人

    function system_check() {
        if (!function_exists(\'get_plugins\')) {
            require_once ABSPATH . \'wp-admin/includes/plugin.php\';
        }
        if (!function_exists(\'get_site_transient\')) {
            require_once ABSPATH . \'wp-admin/includes/option.php\';
        }
        $updates = get_site_transient(\'update_plugins\');
        $plugins = get_plugins();
        $the_list = array();
        $i = 1;
        if ($updates->response) {
            $the_list["ultima_revision"] = date("Y-m-d g:i A", intval($updates->last_checked));
            foreach ($plugins as $name => $plugin) {
                $the_list["plugins"][$i]["id"] = $name;
                $the_list["plugins"][$i]["name"] = $plugin["Name"];
                $the_list["plugins"][$i]["current_version"] = $plugin["Version"];
                if (isset($updates->response[$name])) {
                    $the_list["plugins"][$i]["update"] = "yes";
                    $the_list["plugins"][$i]["version"] = $updates->response[$name]->new_version;
                } else {
                    $the_list["plugins"][$i]["update"] = "no";
                }
                $i++;
            }
        }
        return $the_list;
    }

SO网友:DevBeppe

解决了,如果有人需要我发布的代码,只需添加管理员权限即可执行require_once