Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

[SOLUCIONADO] Cómo puedo modificar el htaccess de wordpress?

Estas en el tema de Cómo puedo modificar el htaccess de wordpress? en el foro de WordPress en Foros del Web. Hola amigos de forosdelweb No se como explicarme bien, lo vamos a probar... Tengo una programación en wordpress 3.9.1, un plugin exactamente que trabaja sobre ...
  #1 (permalink)  
Antiguo 19/06/2014, 08:37
 
Fecha de Ingreso: junio-2014
Mensajes: 4
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta Cómo puedo modificar el htaccess de wordpress?

Hola amigos de forosdelweb

No se como explicarme bien, lo vamos a probar...

Tengo una programación en wordpress 3.9.1, un plugin exactamente que trabaja sobre 1 pagina.

En el plugin recojo los datos de una asociación de tiendas: Tiendas, promociones... Y los muestro en pantalla juntos y individualmente.






El problema esta en mostrarlos individualemnte para hacerlo lo referencio desde un "id" guardado en la base de datos y la url me queda con una variable "id-tienda".

Quiero modificar el htaccess para solucionar este problema... no soy un experto en el htaccess, he probado muchas formas que hay por internet y no funciona

Este es mi htaccess
Código:
RewriteEngine On
RewriteBase /miweb/
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Ante todo gracias y siento mi caligrafía
  #2 (permalink)  
Antiguo 19/06/2014, 08:55
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Respuesta: Cómo puedo modificar el htaccess de wordpress?

Creo que es mejor hacerlo desde el mismo WordPress, usando sus rewrite_rules para ello necesitas algo así:

Código PHP:
Ver original
  1. function add_rewrite_rules($rules) {
  2.  
  3.     $letter = array('es/tiendas/(.+?)$' => 'index.php?pagename=es/tiendas/&id-tienda=$matches[1]');
  4.     $rules = $letter + $rules;
  5.     return $rules;
  6. }
  7. add_filter('rewrite_rules_array', 'add_rewrite_rules');
  8.  
  9.  
  10. function add_my_query_var($vars){
  11.     $vars[] = "id-tienda";
  12.     return $vars;
  13. }
  14.  
  15. add_filter( 'query_vars', 'add_my_query_var' );

No veo bien la URL en la imagen pero con esto tienes una idea, no debes poner la URL completa solo el path relativo desde el dominio principal.

Son 2 filtros, el primero agrega la expresión regular que se buscara y el segundo agrega la variable al query vars de WordPress para que pueda se "parseada" y usada.

Un plugin util para ver los rewrite rules es el siguiente: https://wordpress.org/plugins/rewrite-rules-inspector/

No olvides hacer actualizar los rules después de cada cambio "Flush Rules" para que tomen efecto.
  #3 (permalink)  
Antiguo 19/06/2014, 17:51
 
Fecha de Ingreso: junio-2014
Mensajes: 4
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Cómo puedo modificar el htaccess de wordpress?

Gracias!! me pongo a investigar el tema. Ya comentare como va
  #4 (permalink)  
Antiguo 20/06/2014, 08:34
 
Fecha de Ingreso: junio-2014
Mensajes: 4
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta Respuesta: Cómo puedo modificar el htaccess de wordpress?

Tengo instalado el plugin Rewrite rules inspector. y hago Flush Rules, en cada prueba

Tengo la función añadida a mi archivo principal del plugin
Código:
function my_insert_rewrite_rules( $rules )
{
	$newrules = array();
	$newrules['botiges/(.+?)$'] = 'index.php?pagename=botiges&id-tienda=$matches[1]';
	return $newrules + $rules;
}

// Adding the id var so that WP recognizes it
function my_insert_query_vars( $vars )
{
    array_push($vars, 'id-tienda');
    return $vars;
}

add_filter( 'rewrite_rules_array','my_insert_rewrite_rules' );
add_filter( 'query_vars','my_insert_query_vars' );
Incluso he encontrado esta función de auto flush, y parece que funciona ya que el plugin de Rewrite rules inspector me dice que están todas bien y aparece la primera...

Código:
function my_flush_rules(){
	$rules = get_option( 'rewrite_rules' );

	if ( ! isset( $rules['botiges/(.+?)$'] ) ) {
		global $wp_rewrite;
	   	$wp_rewrite->flush_rules();
	}
}

add_action( 'wp_loaded','my_flush_rules' );
Pero no hay manera . Es igual como llame a la pagina

localhost/nou_centre/botiges/7 <-- No funciona no le da valor al get id-tienda

localhost/nou_centre/index.php?pagename=botiges&id-tienda=3 <-- si funciona pero no transforma las variables a url amigable, aunque no se si debería hacerlo


la expresión regular creo que esta correcta, no la he modificado mucho de comó dijo TMeister.
  #5 (permalink)  
Antiguo 20/06/2014, 11:10
 
Fecha de Ingreso: junio-2014
Mensajes: 4
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Cómo puedo modificar el htaccess de wordpress?

Resuelto!

Código:
function my_flush_rules(){
	$rules = get_option( 'rewrite_rules' );

	if ( ! isset( $rules['botiges/([^/]+)/?'] ) ) {
		global $wp_rewrite;
	   	$wp_rewrite->flush_rules();
	}
}
add_action( 'wp_loaded','my_flush_rules' );

add_action( 'init', 'my_rewrites_init' );
function my_rewrites_init(){
    add_rewrite_rule('botiges/([^/]+)/?', 'index.php?pagename=botiges&id-tienda=$matches[1]', 'top');
}

add_filter( 'query_vars', 'my_query_vars' );
function my_query_vars( $query_vars ){
    $query_vars[] = 'id-tienda';
    return $query_vars;
}

function qv_isset($var_name) {
    $array = $GLOBALS['wp_query']->query_vars;
    return array_key_exists($var_name, $array);
}
Y después recojo el id. Cosa que no sabia que había que hacer

Código:
$id_tienda = get_query_var('id-tienda');
	if($id_tienda != NULL){
		$_GET["id-tienda"] = get_query_var('id-tienda');
	}

Etiquetas: htaccess
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:06.