Habilitar/deshabilitar menú según login en tema WordPress

Sergio20 Seguir

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
2 Jun 2014
Mensajes
7
Hola, en primer lugar mencionar que soy nuevo y agradezco ser miembro de este foro.

Tengo un proyecto en wordpress el cual tengo un theme child del theme customizr, resulta que en el functions.php del child tengo pensado añadir un código para que compruebe si hay un usuario logueado
Insertar CODE, HTML o PHP:
if (is_user_logged_in())
{
       //disabled:false de los elementos de menú correspondientes
}
else
{
       //disabled:true de los elementos de menú correspondientes
}

Cuando haya uno logueado algunos hiperenlaces (a modo botón) de la barra de menú se habilitarán y cuando sea un visitante se deshabilitarán.
Desde el style.css del child sabría como hacerlo pero permanentemente, esto no sería lo hacertado jaja,
lo cual no se como cambiar los estilos desde la función en php para conseguirlo

Un saludo y gracias ;)
 
Última edición:

Inn0c

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 May 2014
Mensajes
28
Creo que la forma mas sencilla y prolija de hacer lo que queres es con jquery.
Si no estas muy a mano con jquery te recomiendo buscar ejemplos sencillos como cambiar estilo css onclic con jquery, funcionaria de la misma forma a lo que queres hacer vos, solo que con php harias algo asi

Insertar CODE, HTML o PHP:
<?php
if (is_user_logged_in())
{
?>
       //Codigo jquery
<?php
}
else
{
?>
       //Codigo jquery
<?php
}
?>
 

Sergio20

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
2 Jun 2014
Mensajes
7
¿es posible hacer algo así?
Insertar CODE, HTML o PHP:
.menu-item
{
	display:<?php if(is_user_logged_in()){echo "none";}else{echo "block";}?>;
}
No funciona pero lo pongo por si alguien sabe algo parecido, ya que sería mas sencillo quizás que lo ya relatado
Voy a probar también las maneras dichas mas arriba

Gracias :star2:
 

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
¿es posible hacer algo así?
Insertar CODE, HTML o PHP:
.menu-item
{
	display:<?php if(is_user_logged_in()){echo "none";}else{echo "block";}?>;
}
No funciona pero lo pongo por si alguien sabe algo parecido, ya que sería mas sencillo quizás que lo ya relatado
Voy a probar también las maneras dichas mas arriba

Gracias :star2:

no desde CSS... pero si en el header.php ;)

Insertar CODE, HTML o PHP:
<style>
.menu-item
{
	display:<?php if(is_user_logged_in()){echo "none";}else{echo "block";}?>;
}
</style>
</header>

te agrego el header para que veas donde iria :)
 

gbpepe

Gamma
Programador
Desde
30 Mar 2013
Mensajes
266
¿es posible hacer algo así?
Insertar CODE, HTML o PHP:
.menu-item
{
	display:<?php if(is_user_logged_in()){echo "none";}else{echo "block";}?>;
}
No funciona pero lo pongo por si alguien sabe algo parecido, ya que sería mas sencillo quizás que lo ya relatado
Voy a probar también las maneras dichas mas arriba

Gracias :star2:

En CSS no puedes ejecutar PHP, pero puedes imprimir una clase u otra segun el estado...

Insertar CODE, HTML o PHP:
if(is_user_logged_in()){
     $estado = "none";
}else{
     $estado = "block";
}

<a href="#" class="<?php echo $estado;?>">LINK</a>

Esta sería una de las tantas formas con las que se podría conseguir eso, pero con la estructura de lo que has puesto sería algo asi... :p
 

Inn0c

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 May 2014
Mensajes
28
¿es posible hacer algo así?
Insertar CODE, HTML o PHP:
.menu-item
{
	display:<?php if(is_user_logged_in()){echo "none";}else{echo "block";}?>;
}
No funciona pero lo pongo por si alguien sabe algo parecido, ya que sería mas sencillo quizás que lo ya relatado
Voy a probar también las maneras dichas mas arriba

Gracias :star2:

Ahi te metes en un lio jaja porque para que el css ejecute php deberias cambiar la extension de la stylesheet a php y ahi deberias cambiar de todo en wordpress o probar modificando el .htaccess pero es para lio por lo que deberias descartar esa opcion, lo que te puso clicklow creo que es una buena solucion..
Suerte !
 

Sergio20

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
2 Jun 2014
Mensajes
7
¡Me ha funcionado! :), lo que he hecho es ponerlo en el header.php del theme como decía mas arriba cicklow y ahora puedo cambiar el estilo a mi antojo. Muchas gracias a todos/as
 

Billy Mays

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
26 May 2014
Mensajes
95
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
¡Me ha funcionado! :), lo que he hecho es ponerlo en el header.php del theme como decía mas arriba cicklow y ahora puedo cambiar el estilo a mi antojo. Muchas gracias a todos/as

lo haces para que no te copien el contenido?
 

Sergio20

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
2 Jun 2014
Mensajes
7
lo haces para que no te copien el contenido?

No, verás. Tengo un botón para login, cuando alguien se loguea, en el menú se habilitan los links (a modo botón) "mi cuenta", y alguno mas. Tal página de "mi cuenta" la tengo como privada, así que aunque un usuario malintencionado lo desoculte con alguna herramienta de código web y se meta, hallará un bonito 404

PD: Has puesto el mismo mensaje dos veces jaja, salu2
 

lest

Beta
Social Media
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
4 Nov 2013
Mensajes
59
Ahi te metes en un lio jaja porque para que el css ejecute php deberias cambiar la extension de la stylesheet a php y ahi deberias cambiar de todo en wordpress o probar modificando el .htaccess pero es para lio por lo que deberias descartar esa opcion, lo que te puso clicklow creo que es una buena solucion..
Suerte !


Noy hay necesidad de meterse en ningun lio, de hecho para hacer eso solo necesita cambiar la extencion del archivo de ".css" por ".php" y en el archivo colocar hasta amero arriva (antes de cualquier otra cosa) agregar:
PHP:
<?php
header('Content-Type: text/css');
?>
y ya despues agregar todo su css y donde quiera que se ejecute alguna funcion PHP habrir las clasicas etiquetas <?php ?>

Claro y por susuesto que en el momento de incluir el archivo en el template en lugar de poner style.css sera style.php
HTML:
<link rel="stylesheet" type="text/css" media="screen" href="template/css/styles.php">
pero esto no representa ningun problema para wordpress ni para los navegadores.

el .htaccess no tiene cavida ni nada que hacer en este tema, no necesitas moverle nada.
 

Inn0c

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 May 2014
Mensajes
28
Noy hay necesidad de meterse en ningun lio, de hecho para hacer eso solo necesita cambiar la extencion del archivo de ".css" por ".php" y en el archivo colocar hasta amero arriva (antes de cualquier otra cosa) agregar:
PHP:
<?php
header('Content-Type: text/css');
?>
y ya despues agregar todo su css y donde quiera que se ejecute alguna funcion PHP habrir las clasicas etiquetas <?php ?>

Claro y por susuesto que en el momento de incluir el archivo en el template en lugar de poner style.css sera style.php
HTML:
<link rel="stylesheet" type="text/css" media="screen" href="http://forobeta.com/template/css/styles.php">
pero esto no representa ningun problema para wordpress ni para los navegadores.

el .htaccess no tiene cavida ni nada que hacer en este tema, no necesitas moverle nada.

En cuanto al lio me referia a que deberia cambiar los include que se hagan de la stylesheet, me parece que hay soluciones mas faciles sin tener que modificar archivo por archivo, y con el .htaccess me referia a agregarle
Insertar CODE, HTML o PHP:
AddType application/x-httpd-php .css
 

lest

Beta
Social Media
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
4 Nov 2013
Mensajes
59
con agregar en el archivo php
HTML:
header('Content-Type: text/css');

te evitas tener que agregar la linea que mencionas en el .htaccess
Aunque tienes razon si solo se usara para un boton puede ser innecesario (no un lio) pero si le dara mas usos bien vale la pena.
 
Arriba