Suporte » Desenvolvendo com WordPress » Como criar um if else com key

  • Resolvido celsosh

    (@celsosh)


    Olá, estou tendo problemas para colocar uma função para selecionar algumas categorias usando key metas.
    Exemplo , tenho uma key chamada”video”(videos puxados do Youtube, por exemplo) e algumas categorias onde cada um tem uma div que vai o video referente a sua div.
    Assim:
    categoria x , vai o video x
    categoria y, vai o video y

    Eu sei que usa a função –
    <?php $key="video";echo get_post_meta($post->ID,$key,true);?>

    O que preciso é um

    if(is_category(x)){
    <?php $key="video";echo get_post_meta($post->ID,$key,true);?> };
    }elseif{is_category(y)){
    <?php $key="video";echo get_post_meta($post->ID,$key,true);?> };
    }else{
    <?php $key="video";echo get_post_meta($post->ID,$key,true);?> };

    Não sei se preciso criar uma key para cada um(x e y)ou se o que estou fazendo está errado.
    Alguém poederia me dar uma luz?
    Obrigado

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • Olá celsosh.

    Primeiramente, você pode usar seu código assim
    get_post_meta( $post->ID, 'video' , true );

    Outra coisa é que eu acho que a idéia está mal desenvolvida.

    Pois se você precisa de diferenciação de vídeos de acordo com categorias você deve ter uma chave para seu cf específica para cada categoria.

    Criador do tópico celsosh

    (@celsosh)

    Olá Myst1010,
    Acredito q esteja mal estruturado, não conheço muito de função. Estou restando varias formas e ainda não descobri como fazer isso

    Olá celsosh, você pode usar isso

    function is_category_videos( $cat ){
    	global $post;
    
    	//Converte o nome da categoria em slug dela caso seja usado o nome e não a slug da categoria.
    	$cat = sanitize_title( $cat );
    
    	if( is_category( $cat ) ){
    		return get_post_meta( $post->ID, 'video-'.$cat , true );
    	} else {
    		return false;
    	}
    }

    então as key precisariam ser video + o slug ou nome da categoria assim
    video-aventura
    video-terror

    não testei muito bem, mas acho que com isso você consegue fazer o que está precisando.

    Criador do tópico celsosh

    (@celsosh)

    Olá Myst1010,

    Agradeço a ajuda, mas infelizmente não funcionou. Veja se estou fazendo certo. Devo retirar o código que postei e colocar o seu no lugar, além de quando for postar um video, tenho que colocar no campo personalizado a key referente ao video(ex. video para postagem do brasil, a key deve ser video-brasil,por exemplo….seria isso?)Já possuo uma categoria video-brasil criada e quando postei coloquei nessa categoria.

    Olá celsosh, desculpe a informação pela metade, mas ficou confuso porque não expliquei direito mesmo.

    Sim você está correto, a key deve ser assim mesmo como você fez.
    Ao utilizar a função que lhe passei você deve então colocar assim onde deseja imprimir o vídeo.

    <?php echo is_category_videos( 'brasil' ); ?>

    Desta forma a função irá verificar se está na categoria brasil e irá imprimir o vídeo utilizando a função get_post_meta com a key video-brasil, sendo que não função você só precisa passar o slug da categoria.

    Talvez seja mais apropriado alterar o nome da função, pois is_category_video fica meio sem sentido, talvez fique mais lógico chamá-la de print_category_video para não confundir ou qualquer nome que lhe faça mais sentido.

    Complementando:
    para deixar mais dinâmica a funcionalidade, você pode na página de categorias pegar dinamicamente o nome da categoria e utilizar em sua função, ficaria mais ou menos assim.

    <?php $cat = get_queried_object();
    echo is_category_videos( $cat->slug ); ?>
    Criador do tópico celsosh

    (@celsosh)

    Myst1010,

    Acho que não estou entendendo..fiz assim:

    <?php  function is_category_videos( $cat ){
    	global $post;
    
    	//Converte o nome da categoria em slug dela caso seja usado o nome e não a slug da categoria.
    	$cat = sanitize_title( $cat );
    
    	if( is_category( $cat ) ){
    		return get_post_meta( $post->ID, 'video-'.$cat , true );
    	} else {
    		return false;
    	}
    }
             ?>
             <?php echo is_category_videos( 'brasil' ); ?>

    É assim que você está tentando me dizer? ou tenh que colocar mais alguma coisa?

    É assim mesmo, mas a função vai no functions.php do seu tema em qualquer parte dele.

    <?php  function is_category_videos( $cat ){
    	global $post;
    
    	//Converte o nome da categoria em slug dela caso seja usado o nome e não a slug da categoria.
    	$cat = sanitize_title( $cat );
    
    	if( is_category( $cat ) ){
    		return get_post_meta( $post->ID, 'video-'.$cat , true );
    	} else {
    		return false;
    	}
    }
    ?>

    E a chamada da função vai na sua página categoria que é no arquivo category.php

    <?php echo is_category_videos( 'brasil' ); ?>

    E no campo personalizado precisa estar
    chave = video-brasil
    valor = url do vídeo

    Criador do tópico celsosh

    (@celsosh)

    Olá Myst1010, novamente agradeço a ajuda que está me dando.
    A parte da function, tudo bem, mas meu problema fica no category.php….o arquivo onde ficará os videos não é no category e sim em arquivos com o nome exemplo: category-3(representa o brasil, category-4()representa o japão) e assim por diante. O meu category.php é usado para mostrar a lista de posts.
    criei um arquivo chamado video.php e puxei ele para os arquivos que devem mostrar os respectivos videos através do include.
    Coloquei o <?php echo is_category_videos( 'brasil' ); ?> no arquivo video.php e a função no functions, mas assim mesmo não funcionou.

    celsosh como você disse que precisava fazer uma verificação com is_category imaginei que você estava trabalhando com a página categorias, se a verificação ai é dentro do loop não entendi que necessidade é esta de verificar que categoria está.

    Vamos por partes, cada post tem mais de um vídeo?
    Se não tiver e a verificação é para mostrar o vídeo do post não entra verificação alguma de categoria, pois não interessa em que categoria este post está, ele sempre terá seu vídeo.

    Este arquivo vídeo.php é uma página modelo? que mostra o que exatamente?

    Criador do tópico celsosh

    (@celsosh)

    Myst1010, achei que através do is_category teria como o código verificar se estiver na categoria-brasil que puxasse o video-brasil e não um outro.
    Vi em alguns fóruns e achei que fosse assim que teria que fazer. Tenho muitos arquivos do tipo-category-1, category-2,….que representam um país respectivamente…cada um igual ao outro somente mudando o conteúdo através de queryposts….achei que fazendo com os videos ,usando o código que postei no começo, poderia também fazer com os arquivos para poder diminuir a quantidade de arquivos criados.
    Desculpe se fiz você interpretar errado…pois achei que fosse assim que teria que fazer.
    Para responder suas perguntas seguintes, somente alguns posts possuem video.
    O video.php é somente um arquivo php onde coloquei a div com a formatação e através do include do wordpress puxaria para o local que deve ficar em cada arquivo de país.

    Mas os posts que possuem vídeo possuem mais de um vídeo, tipo cada vídeo para uma categoria diferente?

    Pois neste caso seria mesmo necessário verificar a categoria deste post, mas já não sei como fazer a distinção, pois um post que está em mais de uma categoria terá varios vídeos

    Mas se cada post tem só um vídeo é só fazer a chamada do get_post_meta e apresentar o vídeo.

    Bem, infelizmente estou sem tempo agora para pesquisar mais sobre isso, desculpe não conseguir lhe ajudar.

    Vou tentar inserir esses codigos no meu site de tatuagens http://tatuagens.org , tomara que de certo. Valeu.

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • O tópico ‘Como criar um if else com key’ está fechado para novas respostas.