Last active
September 20, 2024 14:09
-
-
Save cuxaro/17101b0214b15d3f9b9d47ba5792f6ea to your computer and use it in GitHub Desktop.
Generar Redirecciones mediante código
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Crea una redirección utilizando Red_Item y permite modificar su comportamiento mediante hooks. | |
* | |
* @param string $source URL de origen. | |
* @param string $target URL de destino. | |
* @param bool $regex Define si se usa regex en la redirección. | |
* @param int $group_id ID del grupo de redirecciones. | |
* @param int $status_code Código HTTP (301 o 302). | |
* @return string Resultado de la operación. | |
*/ | |
function ibp_create_redirection( $source, $target, $regex = false, $group_id = 1, $status_code = 301 ) { | |
// Permitir que otros modifiquen los valores de entrada mediante apply_filters | |
$source = apply_filters( 'ibp_filter_source_url', $source ); | |
$target = apply_filters( 'ibp_filter_target_url', $target ); | |
$regex = apply_filters( 'ibp_filter_is_regex', $regex ); | |
$group_id = apply_filters( 'ibp_filter_group_id', $group_id ); | |
$status_code = apply_filters( 'ibp_filter_status_code', $status_code ); | |
// Acción antes de crear la redirección | |
do_action( 'ibp_before_create_redirection', $source, $target, $regex, $group_id, $status_code ); | |
if ( class_exists( 'Red_Item' ) ) { | |
// Crear la redirección | |
$redirection_id = Red_Item::create( [ | |
'source' => $source, | |
'target' => $target, | |
'regex' => $regex, | |
'group_id' => $group_id, | |
'red_action' => 'url', | |
'match' => 'url', | |
'action_code' => $status_code | |
]); | |
// Acción después de crear la redirección | |
do_action( 'ibp_after_create_redirection', $redirection_id, $source, $target, $regex, $group_id, $status_code ); | |
return apply_filters( 'ibp_create_redirection_result', "Redirección creada con éxito. ID: $redirection_id", $redirection_id ); | |
} else { | |
// Acción en caso de error | |
do_action( 'ibp_redirection_error', $source, $target ); | |
return apply_filters( 'ibp_create_redirection_error', 'Error: No se pudo encontrar la clase Red_Item.' ); | |
} | |
} | |
// Hook general que puede ser usado desde otros lugares | |
add_action( 'ibp_add_redirection', 'ibp_create_redirection', 10, 5 ); | |
/** | |
* Registra un comando WP-CLI para gestionar redirecciones. | |
* | |
* Uso: wp ibp create_redirection --source='/origen' --target='/destino' --status_code=301 | |
*/ | |
if ( defined( 'WP_CLI' ) && WP_CLI ) { | |
/** | |
* Comando WP-CLI para crear una redirección. | |
*/ | |
class IBP_Redirection_CLI { | |
/** | |
* Crea una redirección desde la línea de comandos. | |
* | |
* @param array $args Argumentos posicionales. | |
* @param array $assoc_args Argumentos asociados. | |
*/ | |
public function create_redirection( $args, $assoc_args ) { | |
$source = $assoc_args['source'] ?? ''; | |
$target = $assoc_args['target'] ?? ''; | |
$status_code = $assoc_args['status_code'] ?? 301; | |
$regex = $assoc_args['regex'] ?? false; | |
$group_id = $assoc_args['group_id'] ?? 1; | |
if ( ! empty( $source ) && ! empty( $target ) ) { | |
// Llama a la acción para crear la redirección | |
$result = ibp_create_redirection( $source, $target, $regex, $group_id, $status_code ); | |
WP_CLI::success( $result ); | |
} else { | |
WP_CLI::error( 'Por favor, proporciona las URLs de origen y destino.' ); | |
} | |
} | |
} | |
// Registra el comando en WP-CLI | |
WP_CLI::add_command( 'ibp create_redirection', [ 'IBP_Redirection_CLI', 'create_redirection' ] ); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment