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

Mantener Parámetros vivos en un Plugin

Estas en el tema de Mantener Parámetros vivos en un Plugin en el foro de WordPress en Foros del Web. Muy buenas señores, ante todo gracias por vuestra atención y espero que entre todos podamos dejar bien claro éste tema, ya que por más información ...
  #1 (permalink)  
Antiguo 28/12/2010, 14:14
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Mantener Parámetros vivos en un Plugin

Muy buenas señores, ante todo gracias por vuestra atención y espero que entre todos podamos dejar bien claro éste tema, ya que por más información que busco, no encuentro nada, quizás sea que no busqué bien pero... los resultados que encuentro no son los correctos.


Les explico: Imaginense que, he creado 1 página (/?page_id=62), y he instalado un plugin de mensajería interna que usa una única página (/?page_id=6) para realizar su cometido (escribir mensajes, bandeja de entrada, enviados... etc, todo en la página mostrada anteriormente)


Ahora bien, dentro de la página (/page_id=62) creo 3 enlaces (por ejemplo) en el que cada uno elige un itinerario diferente

Código:
<a href="/?itinerario=1&page_id=6&um_action=write_message">
<a href="/?itinerario=2&page_id=6&um_action=write_message">
<a href="/?itinerario=3&page_id=6&um_action=write_message">
itinerario que defino y envío por URL mediante la variable (/?itinerario= ) además de otras variables que son para el plugin, en éste caso me llevan la página para escribir mensaje.


En dicha página, yo recogo la variable... he probado con $_GET, $HTTP_GET_VARS, incluso por $_SESSION, ésta vez, voy a demostrarselo con la más sencilla, $_GET.

Código:
$itinerario = $_GET['itinerario'];

ECHO $itinerario;

Ok, ya estaría, ahora es cuando accedo a la página /?page_id=62 para verificar que los enlaces funcionan.


Clickeo en el primero y observo que la variable /?itinerario=1 se mantiene en la URL.

Aparece la sección para escribir nuevo mensaje (mencionada anteriormente y que también indiqué con las variables en el enlace), y todo correcto, me muestra el valor "1" como muestra de que la variable la ha recogido bien.


Ahora viene el problema, Clickeo en cualquier otro enlace del sitio (más concretamente en los enlaces del propio plugin) y.... obviamente la variable se pierde, y lo peor es que cuando vuelvo a acceder a "escribir mensaje" como también es obvio no muestra la variable porque no existe!

¿Cómo puedo mantener esa variable viva en todo el plugin?, es decir, que independiente del enlace que pulse en el plugin, siempre se mantenga la variable.


He probado a meterlo en el archivo principal (user messages.php, ya que el plugin es el User Messages de Vicent Prat) del plugin a través de $_SESSION pero seguimos en las mismas, se pierde la variable.


Lo que pretendo conseguir es que, el archivo "escribir mensaje" alterarlo de tal forma que dependiendo del itinerario elegido o enlace elegido, muestre unos contenidos u otros (ya los he programado yo), pero no hay forma de que esa variable siga viva para que realice su cometido.


La historia está....¿existen archivos donde yo pueda definir o reescribir esa regla?


Observando el plugin he llegado hasta aquí pero nose si estoy bien encaminado:

Código:
$base_interface_url = 'index.php?page_id=' . $id;	

// rewrite rules for actions			
//--			

$criteria = str_replace('-', '\-', $this->options["interface_" . UM_PREFERENCES_ACTION . "_slug"]);

$additional_rewrite_rules[ '.*' . $slug_criteria . '/' . $criteria . '/?$' ] = $base_interface_url . '&um_action=' . UM_PREFERENCES_ACTION;

supongo que si yo hago algo sencillo y por ejemplo así:

Código:
IF ( $itinerario == 1 ) {
$base_interface_url = 'index.php?itinerario=1&page_id=' . $id;
} ELSEIF ( $itinerario == 2 ) {
$base_interface_url = 'index.php?itinerario=2&page_id=' . $id;
} ELSE {
$base_interface_url = 'index.php?page_id=' . $id;
}

Debería rescribir la condición que he definido pero... nada de nada, incluso lo he complicado más con swith y function y.... sin resultados.

También probé a usar plugins como "YD Spread Parameter" o el siguiente: "http://www.webopius.com/content/137/using-custom-url-parameters-in-wordpress"

Pero nose si es que no sé hacerlo o no son compatibles para plugins o qué, pero no me hacen ni caso...


Y bueno, ese es el problema, espero que puedan ayudarme y muchísimas gracias nuevamente, estaré al tanto de vuestras respuestas y espero que la solución a éste problema le sirva a los demás usuarios que como yo, no saben mantener una variable viva en un plugin de wordpress.


Gracias y Salu2.

Última edición por Z3R0N3; 28/12/2010 a las 14:20
  #2 (permalink)  
Antiguo 29/12/2010, 06:25
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Mantener Parámetros vivos en un Plugin

Hola señores, actualizo el post para informarles de mis progresos, así podemos mantener vivo éste hilo e ir sirviendole de ayuda a los usuarios que tienen éste mismo problema.

He instalado un plugin que permite insertar código PHP en cualquier página, post, widget y demás desde el propio gestor de admin de Wordpress.

El plugin es el siguiente:

http://dcabai.blogspot.com/2008/04/e...en-espaol.html


Y bueno, creo que éste plugin me facilitará la inserción de código pero aún así tengo problemas....

He probado a hacer el siguiente código dentro de la página /?page_id=6 (la del plugin)


Código:
<?php
$itinerario = $_GET['itinerario'];
IF ( ($itinerario == 1 ) & (is_user_logged_in()) ) {
$_SESSION['itinerario']=$itinerario;
?>
[user-messages /]
<?php
} ELSEIF ( ($itinerario == 2 ) & (is_user_logged_in()) ) {
$_SESSION['itinerario']=$itinerario;
?>
[user-messages /]
<?php
} ELSE { ECHO "no has escogido ningun itinerario"; }
?>

Obviamente redirige bien en función del itinerario escogido, pero cuando accedo al plugin y clickeo en cualquiera de los enlaces (bandeja de entrada, enviados... etc.) me salta el último else de la condición anterior, es decir, muestra

"no has escogido ningun itinerario"


Lo que me induce a pensar que la sesión no la hace correctamente, también he probado a incluir en el resto de archivos de el plugin la siguiente definición de variable:

Código:
$itinerario = $_SESSION['itinerario'];

Pero seguimos en las mismas, tiene que haber alguna forma de poder pasarle la variable al resto del control.... y la línea
Código:
[user-messages /]
tiene que mandar en éste ámbito sobre el control...


Seguiré probando y a la espera de alguna respuesta.


Gracias nuevamente y Saludos
  #3 (permalink)  
Antiguo 30/12/2010, 11:35
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Mantener Parámetros vivos en un Plugin

Muy buenas, al parecer ya lo tengo medio solucionado, lo que he hecho ha sido lo siguiente:


Dentro de la página ?page_id=6 he introducido lo siguiente:

Código:
<?php
$itinerario = $_GET['itinerario'];
IF ( ($itinerario == 1 ) or ($itinerario == 2 ) or ($itinerario == 3) & (is_user_logged_in()) ) {
$_SESSION['itinerario']=$itinerario;
?>
[user-messages /]
<?php
} ELSE {
ECHO "Por favor, compruebe lo siguiente:\n\n\n";
ECHO "1 - Se ha identificado como usuario (panel de la derecha)\n";
ECHO "2 - Ha elegido un itinerario correcto (dir&iacute;gase a "Zona Clientes" y elija una de las opciones mostradas)\n";
}
?>

Luego he recogido ésta variable;

Código:
$itinerario = $_SESSION['itinerario'];

En todas las paginas donde se produce una redirección, enlace, formulario etc...

y añadiendo en cada una de ellas una instrucción del tipo:

Código:
&itinerario='.itinerario.'

Al parecer mantiene la variable en la mayoría de los enlaces, solo que tengo algunos problemas a la hora de enviar un mensaje y pequeñas funciones dentro del plugin que impiden la interacción con la variable.


Voy a seguir dandole duro haber que consigo...


Gracias nuevamente y Saludos.

Etiquetas: mantener, plugin
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 23:51.