Si trabajas realizando proyectos en WordPress en el que el código se aloja en un servidor usando SVN, una forma sencilla de actualizar tu theme con los últimos cambios es mediante este sencillo y no-seguro plugin.
El plugin añade una opción de menú al Settings del Dashboard de WP, el cual te servirá para indicar el servidor SVN, usuario, contraseña y el path que corresponde a la carpeta themes de WP. El plugin se conectará al repositorio SVN y recuperará las carpetas que se encuentran en el path anterior y comprobará si las carpetas corresponden a themes instalados, mostrarás una lista con los themes encontrados junto a un botón que permite actualizar todo el theme.
Digo que no es seguro porque no controlo los permisos de los usuarios ni otras cuestiones, pero si estás interesado en ello supongo que no te costará mucho meterle mano al código:
// Adding Admin menu
if ( is_admin() ){
add_action('admin_menu', 'svn_update_menu');
add_action( 'admin_init', 'svn_update_register_settings' );
}
function svn_update_register_settings() {
register_setting( 'svn_up_option-group', 'svn_username' );
register_setting( 'svn_up_option-group', 'svn_password' );
register_setting( 'svn_up_option-group', 'svn_repository' );
register_setting( 'svn_up_option-group', 'svn_theme_path' );
if ($_GET['page'] == 'svn-update/svn-update.php') {
require ('phpsvnclient/phpsvnclient.php');
$phpsvnclient = new phpsvnclient(get_option('svn_repository'), get_option('svn_username'), get_option('svn_password'));
$files = $phpsvnclient->getDirectoryFiles('/');
$svn_themes = array();
$themes = array();
foreach(get_themes() as $k=>$t) $themes[$t['Template']] = array($k, $t["Template Dir"]);
if (is_array($files)) {
foreach($files as $f) {
if ($f['type'] == 'directory') {
if (isset($themes[$f['path']])) $svn_themes[$f['path']] = $themes[$f['path']];
}
}
}
update_option('svn_themes', $svn_themes);
if (isset($_GET['svn_update'])) {
$path = $_GET['svn_update'];
$theme_path = WP_CONTENT_DIR . '/themes/';
$files = $phpsvnclient->getDirectoryFiles($path);
foreach($files as $f) {
if ($f['type'] == 'file') {
file_put_contents($theme_path.$f['path'], $phpsvnclient->getFile($f['path']));
}
}
add_action('admin_notices', 'showSVNUpdated');
}
}
}
function showSVNUpdated() {
echo '';
}
function svn_update_menu() {
add_options_page('SVN Update Options', 'SVN Update', 8, __FILE__, 'svn_update_options');
}
function svn_update_options() {
?>
Available Themes
No themes found in SVN repository instaled in WordPress';
} else {
echo '';
foreach($themes as $k=>$t) {
echo '- /'.$k.' => '.$t[0].' Update
';
}
echo '
';
}
?>
Este plugin necesita la librería PHP SVN Client para acceder al SVN, tan solo hay que meterlo en el mismo directorio que el plugin. Le faltan muchas cosas al plugin, pero ni tengo ganas ni tengo tiempo.
Hola,
Parece que el filtro
posts_results
ya esta obsoleto, uno equivalente podrÃa serposts_request
.Saludos!
Hola Francisco
Pues sinceramente, ni idea de si está obsoleto, yo me metà en el código de WP y vi que hacÃa uso de ese filtro.
Muchas gracias por el aviso, ¿dónde puedo ver que el filtro está obsoleto para la próxima?
Saludos
Qué tal,
Me dà cuenta que estaba depreciado porque no lo encontré en includes/query.php donde pensé que corresponde, tampoco esta en la documentación oficial de filtros y por último lo busqué en google y en otro repositorio de hooks encontré http://adambrown.info/p/wp_hooks/hook/posts_results
Me imagino que si no esta en la lista de filtros oficial, seguramente este depreciado y pronto a eliminarse, aunque yo buscarÃa directamente por el hook en cuestión para asegurarme.
Un saludo!
Me encanta la página que has pasado, nunca me acuerdo de meterla en “Marcadores” y me viene de perlas que me la hayas pasado 🙂
Gracias