Puede usar el script de shell WordPres Plugin Directory Slurper de Mark Jaquith para descargar el más reciente Versión de todos los complementos del repositorio de WordPress.org. Una vez que se hayan descargado los complementos, puede grep para el prefijo de complemento / enganche que desea verificar, por ejemplo:
grep -r --include=*.php 'wpseo_' ./
Descomprima el paquete de WordPres Plugin Directory Slurper a su raíz de documentos. El nombre de directorio predeterminado es WordPress-Plugin-Directory-Slurper
y contiene:
/plugins/
/readmes/
/zips/
LICENSE
README.markdown
update
Ejecute el script bash ejecutando php update
desde dentro del directorio WordPress-Plugin-Directory-Slurper
. Los complementos comprimidos se descargarán a /zips
y se extraerán a /plugins
. El repositorio completo está en algún lugar alrededor de 15 GB y tardará varias horas en descargarse por primera vez.
El contenido del script update
:
#!/usr/bin/php
<?php
$args = $argv;
$cmd = array_shift( $args );
$type = 'all';
if ( !empty( $args[0] ) ) {
$type = $args[0];
}
switch ( $type ) {
case 'readme':
$directory = 'readmes';
$download = 'readmes/%s.readme';
$url = 'http://plugins.svn.wordpress.org/%s/trunk/readme.txt';
break;
case 'all':
$directory = 'plugins';
$download = 'zips/%s.zip';
$url = 'http://downloads.wordpress.org/plugin/%s.latest-stable.zip?nostats=1';
break;
default:
echo $cmd . ": invalid command\r\n";
echo 'Usage: php ' . $cmd . " [command]\r\n\r\n";
echo "Available commands:\r\n";
echo " all - Downloads full plugin zips\r\n";
echo " readme - Downloads plugin readmes only\r\n";
die();
}
echo "Determining most recent SVN revision...\r\n";
try {
$changelog = @file_get_contents( 'http://plugins.trac.wordpress.org/log/?format=changelog&stop_rev=HEAD' );
if ( !$changelog )
throw new Exception( 'Could not fetch the SVN changelog' );
preg_match( '#\[([0-9]+)\]#', $changelog, $matches );
if ( !$matches[1] )
throw new Exception( 'Could not determine most recent revision.' );
} catch ( Exception $e ) {
die( $e->getMessage() . "\r\n" );
}
$svn_last_revision = (int) $matches[1];
echo "Most recent SVN revision: " . $svn_last_revision . "\r\n";
if ( file_exists( $directory . '/.last-revision' ) ) {
$last_revision = (int) file_get_contents( $directory . '/.last-revision' );
echo "Last synced revision: " . $last_revision . "\r\n";
} else {
$last_revision = false;
echo "You have not yet performed a successful sync. Settle in. This will take a while.\r\n";
}
$start_time = time();
if ( $last_revision != $svn_last_revision ) {
if ( $last_revision ) {
$changelog_url = sprintf( 'http://plugins.trac.wordpress.org/log/?verbose=on&mode=follow_copy&format=changelog&rev=%d&limit=%d', $svn_last_revision, $svn_last_revision - $last_revision );
$changes = file_get_contents( $changelog_url );
preg_match_all( '#^' . "\t" . '*\* ([^/A-Z ]+)[ /].* \((added|modified|deleted|moved|copied)\)' . "\n" . '#m', $changes, $matches );
$plugins = array_unique( $matches[1] );
} else {
$plugins = file_get_contents( 'http://svn.wp-plugins.org/' );
preg_match_all( '#<li><a href="([^/]+)/">([^/]+)/</a></li>#', $plugins, $matches );
$plugins = $matches[1];
}
foreach ( $plugins as $plugin ) {
$plugin = urldecode( $plugin );
echo "Updating " . $plugin;
$output = null; $return = null;
exec( 'wget -q -np -O ' . escapeshellarg( sprintf($download, $plugin) ) . ' ' . escapeshellarg( sprintf($url, $plugin) ) . ' > /dev/null', $output, $return );
if ( $return === 0 && file_exists( sprintf($download, $plugin) ) ) {
if ($type === 'all') {
if ( file_exists( 'plugins/' . $plugin ) )
exec( 'rm -rf ' . escapeshellarg( 'plugins/' . $plugin ) );
exec( 'unzip -o -d plugins ' . escapeshellarg( 'zips/' . $plugin . '.zip' ) );
exec( 'rm -rf ' . escapeshellarg( 'zips/' . $plugin . '.zip' ) );
}
} else {
echo '... download failed.';
}
echo "\r\n";
}
if ( file_put_contents( $directory . '/.last-revision', $svn_last_revision ) )
echo "[CLEANUP] Updated $directory/.last-revision to " . $svn_last_revision . "\r\n";
else
echo "[ERROR] Could not update $directory/.last-revision to " . $svn_last_revision . "\r\n";
}
$end_time = time();
$minutes = ( $end_time - $start_time ) / 60;
$seconds = ( $end_time - $start_time ) % 60;
echo "[SUCCESS] Done updating plugins!\r\n";
echo "It took " . number_format($minutes) . " minute" . ( $minutes == 1 ? '' : 's' ) . " and " . $seconds . " second" . ( $seconds == 1 ? '' : 's' ) . " to update ". count($plugins) ." plugin" . ( count($plugins) == 1 ? '' : 's') . "\r\n";
echo "[DONE]\r\n";
Si desea descargar todos los temas aprobados más recientes, también hay un script para eso: WordPress Theme Directory Slurper por Aaron Jorbin.
Estos scripts de shell están diseñados para un sistema Unix. Si está utilizando Windows, puede ejecutar los scripts Slurper de Plugin / Tema usando cygwin.