Ajuda com uso de else if

  • Autor Autor tommy2032
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Status

🔒 Este tópico está fechado para novas respostas.

⏰ Apenas o criador do tópico pode solicitar a reabertura de seus próprios tópicos, mas apenas dentro dos 60 dias anteriores à última atualização.

T

tommy2032

1
Dseda
Social Media
Suscripción a IA
pasa que estoy tratando de poner unos iconos en mi web que se muestren cuando esta en una determinada categoría, el problema es que cuando pongo dos o mas categoría no me muestra los icono pero si lo muestra si pongo solo una categoría si pongo dos no lo muestra

/////////////////////////////////////////////////Codigo///////////////////////////////////////////////////////
<div class="film-stats">
<ul>
<?php $idioma = get_the_term_list($post->ID, 'idioma', '', ', ', '');
$idioma = strip_tags( $idioma );
?>
<?php if($idioma == 'Subtitulada')
{
echo '<li class="Subtitulada"><div class="iSubtitulada"></div></li> ';
}
elseif($idioma == 'Español')
{
echo ' <li class="Castellano"><div class="iCastellano"></div></li> ';
}
elseif($idioma == 'Latino')
{
echo ' <li class="Latino"><div class="iLatino"></div></li>';
}
?>
<li class=""><div class="i"></div></li>
</ul>
</div>
/////////////////////////////////////////////////Codigo///////////////////////////////////////////////////////



alguna idea de como lo reparo el bug ??


Captura de como es que queda con 1 categoría y con 2 categorías

Screenshot_16.webp

ayuda porfavor
 
Última edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Nada. ----------
 
Última edição:
l oque quiro saber es como hacer para que muestre los tres resultado si son tres categorias porque si pongo tres no me muestra nada si pongo 1 so lo muestra ????

El problema está entre la silla y el ordenador.

Con "get_the_term_list" obtienes una lista y si pones varios, lógicamente dicha lista no será solo "subtitulada", "español" o "latino".

Te recomiendo mejor usar: https://codex.wordpress.org/Function_Reference/has_term

kj
 
l oque quiro saber es como hacer para que muestre los tres resultado si son tres categorias porque si pongo tres no me muestra nada si pongo 1 so lo muestra ????

La respuesta ya te la di, revisa primero la url que te coloqué.

kj
 
Usa switch mejor :encouragement:
 
Hola.
Como te decian arriba, si deberia ser mejor utilizar la funcion has_term

Pero puedes intentar hacerlo de esta forma: (el codigo no esta probado) https://codex.wordpress.org/Function_Reference/get_the_category
Inserir CODE, HTML ou PHP:
<?php

$mostrar = '';
$categories = get_the_category($post->ID);
if($categories){
	foreach($categories as $category) {

		if($category->cat_name == 'Subtitulada'){
			$mostrar .= 'tu html if es subtitulada';
		}

		if($category->cat_name == 'Español'){
			$mostrar .= 'tu html if es Español';
		}
		
	}
}

echo $mostrar;
?>


El codigo html se ira guardando en la variable $mostrar, al final solo la imprimes donde la necesites y te mostrara todo.

Saludos.
 
Hola.
Como te decian arriba, si deberia ser mejor utilizar la funcion has_term

Pero puedes intentar hacerlo de esta forma: (el codigo no esta probado) https://codex.wordpress.org/Function_Reference/get_the_category
Inserir CODE, HTML ou PHP:
<?php

$mostrar = '';
$categories = get_the_category($post->ID);
if($categories){
	foreach($categories as $category) {

		if($category->cat_name == 'Subtitulada'){
			$mostrar .= 'tu html if es subtitulada';
		}

		if($category->cat_name == 'Español'){
			$mostrar .= 'tu html if es Español';
		}
		
	}
}

echo $mostrar;
?>


El codigo html se ira guardando en la variable $mostrar, al final solo la imprimes donde la necesites y te mostrara todo.

Saludos.

Si te fijas en el código, parece que está utilizando una taxonomía personalizada, no categorías.

kj
 
Venía a decir lo mismo que [MENTION=81006]kanikase[/MENTION] un switch es lo más cómodo para estos casos.
 
también te recomiendo usar strtolower donde obtienes las categorías o etiquetas para que no tengas problemas por mayúsculas o minúsculas.
 
No te funciona, porque cuando tiene más de uno la cadena es como: "Subtitulada, Latino". Entonces no coincide con ninguno. Aparte que si quieres que te imprima más de uno, los if's deben de estar separados (y en ese caso un switch no sirve), pero asi como está ni if's independientes ni switch te va a servir.

Intenta esto:
PHP:
<?php $idioma = wp_get_object_terms( $post->ID, 'idioma', array( 'fields' => 'names' ) ) ?>

<div class="film-stats">
	<ul>

	<?php if ( in_array('Subtitulada', $idioma) ): ?>
		<li class="Subtitulada"><div class="iSubtitulada"></div></li>
	<?php endif ?>

	<?php if ( in_array('Español', $idioma) ): ?>
		<li class="Castellano"><div class="iCastellano"></div></li>
	<?php endif ?>

	<?php if ( in_array('Latino', $idioma) ): ?>
		<li class="Latino"><div class="iLatino"></div></li>
	<?php endif ?>
	
		<li class=""><div class="i"></div></li>
	</ul>
</div>

Puede que no te funcione por los nombres, si eso pasa usa el strtolower que ya te comentaron y comparalos con las palabras en minusculas ("subtitulada", "español", "latino").

------------------------------------------------------------------------------------------------------------------------------------------------------------------
O también, para como lo tienes, en vez de:
PHP:
<?php $idioma = wp_get_object_terms( $post->ID, 'idioma', array( 'fields' => 'names' ) ) ?>

podría ser algo como:
PHP:
<?php
	$idioma = get_the_term_list($post->ID, 'idioma', '', ',', '');
	$idioma = strip_tags( $idioma );
	$idioma = explode(',', $idioma);
?>

quedando algo como:
PHP:
<?php
	$idioma = get_the_term_list($post->ID, 'idioma', '', ', ', '');
	$idioma = strip_tags( $idioma );
	$idioma = explode(',', $idioma);
?>

<div class="film-stats">
	<ul>

	<?php if ( in_array('Subtitulada', $idioma) ): ?>
		<li class="Subtitulada"><div class="iSubtitulada"></div></li>
	<?php endif ?>

	<?php if ( in_array('Español', $idioma) ): ?>
		<li class="Castellano"><div class="iCastellano"></div></li>
	<?php endif ?>

	<?php if ( in_array('Latino', $idioma) ): ?>
		<li class="Latino"><div class="iLatino"></div></li>
	<?php endif ?>
	
		<li class=""><div class="i"></div></li>
	</ul>
</div>

Saludos.
 
Última edição:
No te funciona, porque cuando tiene más de uno la cadena es como: "Subtitulada, Latino". Entonces no coincide con ninguno. Aparte que si quieres que te imprima más de uno, los if's deben de estar separados (y en ese caso un switch no sirve), pero asi como está ni if's independientes ni switch te va a servir.

Intenta esto:
PHP:
<?php $idioma = wp_get_object_terms( $post->ID, 'idioma', array( 'fields' => 'names' ) ) ?>

<div class="film-stats">
    <ul>

    <?php if ( in_array('Subtitulada', $idioma) ): ?>
        <li class="Subtitulada"><div class="iSubtitulada"></div></li>
    <?php endif ?>

    <?php if ( in_array('Español', $idioma) ): ?>
        <li class="Castellano"><div class="iCastellano"></div></li>
    <?php endif ?>

    <?php if ( in_array('Latino', $idioma) ): ?>
        <li class="Latino"><div class="iLatino"></div></li>
    <?php endif ?>
    
        <li class=""><div class="i"></div></li>
    </ul>
</div>

Puede que no te funcione por los nombres, si eso pasa usa el strtolower que ya te comentaron y comparalos con las palabras en minusculas ("subtitulada", "español", "latino").

------------------------------------------------------------------------------------------------------------------------------------------------------------------
O también, para como lo tienes, en vez de:
PHP:
<?php $idioma = wp_get_object_terms( $post->ID, 'idioma', array( 'fields' => 'names' ) ) ?>

podría ser algo como:
PHP:
<?php
    $idioma = get_the_term_list($post->ID, 'idioma', '', ',', '');
    $idioma = strip_tags( $idioma );
    $idioma = explode(',', $idioma);
?>

quedando algo como:
PHP:
<?php
    $idioma = get_the_term_list($post->ID, 'idioma', '', ', ', '');
    $idioma = strip_tags( $idioma );
    $idioma = explode(',', $idioma);
?>

<div class="film-stats">
    <ul>

    <?php if ( in_array('Subtitulada', $idioma) ): ?>
        <li class="Subtitulada"><div class="iSubtitulada"></div></li>
    <?php endif ?>

    <?php if ( in_array('Español', $idioma) ): ?>
        <li class="Castellano"><div class="iCastellano"></div></li>
    <?php endif ?>

    <?php if ( in_array('Latino', $idioma) ): ?>
        <li class="Latino"><div class="iLatino"></div></li>
    <?php endif ?>
    
        <li class=""><div class="i"></div></li>
    </ul>
</div>

Saludos.

gracias bro el primero me funciono
 
Status

🔒 Este tópico está fechado para novas respostas.

⏰ Apenas o criador do tópico pode solicitar a reabertura de seus próprios tópicos, mas apenas dentro dos 60 dias anteriores à última atualização.

Voltar
Topo