good day dear Davemackey - hello Michael Field
its been a long time that this has been asked - but anyway.. here my little idea that i can come up with..
Not the best answer but I tried to solve my own problem the best way I could.
Getting a list of plugins
This will not return ALL plugins but it will return the top rated ones:
$plugins = plugins_api('query_plugins', array(
'per_page' => 100,
'browse' => 'top-rated',
'fields' =>
array(
'short_description' => false,
'description' => false,
'sections' => false,
'tested' => false,
'requires' => false,
'rating' => false,
'ratings' => false,
'downloaded' => false,
'downloadlink' => false,
'last_updated' => false,
'added' => false,
'tags' => false,
'compatibility' => false,
'homepage' => false,
'versions' => false,
'donate_link' => false,
'reviews' => false,
'banners' => false,
'icons' => false,
'active_installs' => false,
'group' => false,
'contributors' => false
)));
Save the data as JSON
Since the data that we get is huge and it will be bad for performance, we try to get the name
and the slug
out of the array and then we write it in a JSON file:
$plugins_json = '{' . PHP_EOL;
// Get only the name and the slug
foreach ($plugins as $plugin) {
foreach ($plugin as $key => $p) {
if ($p->name != null) {
// Let's beautify the JSON
$plugins_json .= ' "'. $p->name . '": {' . PHP_EOL;
$plugins_json .= ' "slug": "' . $p->slug . '"' . PHP_EOL;
end($plugin);
$plugins_json .= ($key !== key($plugin)) ? ' },' . PHP_EOL : ' }' . PHP_EOL;
}
}
}
$plugins_json .= '}';
file_put_contents('plugins.json', $plugins_json);
Now we have a slim JSON file with only the data that we need.
To keep updating the JSON file, we run that script to create a JSON file every 24 hours by setting up a Cron Job.