Aninhando se declarações para ecoar apenas uma seqüência de caracteres com base em qual tag foi filtrada?

O objective é que, quando você estiver na nossa página de events futuros, você pode filtrar por tipo de evento ou região.

Depois de selecionar a opção no menu suspenso, quero ecoar nesse título da página na barra de navegação. Por exemplo, se você quisesse ver events perto de você em Palo alto, você selecionaria o norte da Califórnia. Aqui está o código para essa seleção

<a class="dropdown-item" href="https://wordpress.stackexchange.com//questions/261924/nesting-if-statements-to-echo-only-one-string-based-on-what-tag-was-filtered/"> Northern California  

Se você não encontrou events perto de você, você poderia selecionar o estado inteiro.

 <a class="dropdown-item" href="https://wordpress.stackexchange.com//questions/261924/nesting-if-statements-to-echo-only-one-string-based-on-what-tag-was-filtered/"> California  

Ou se você estivesse disponível para viajar em qualquer lugar, você poderia selecionar por evento (em um filtro adicional)

 <a class="dropdown-item" href="https://wordpress.stackexchange.com//questions/261924/nesting-if-statements-to-echo-only-one-string-based-on-what-tag-was-filtered/"> Seminar  

Eu estava esperando que seria resolvido com is_tag uma vez que a url termina com essa tag selecionada, porque é assim que o filtro está configurado para direcioná-lo, mas não funcionará (não exibe nada). Somente has_tag funciona, mas o problema é que, em seguida, cada string é repetido para cada tag, neste caso a região, estado e tipo de evento. Aqui está o meu php para ecoar a string

 if(has_tag( 'northern-california' || 'southern-california' || 'nevada' || 'webinar' || 'seminar' || 'industry-events')) { echo ' / ' . '<a href="https://wordpress.stackexchange.com//questions/261924/nesting-if-statements-to-echo-only-one-string-based-on-what-tag-was-filtered/">'; } if(is_tag( 'northern-california' )) { $event_tag = 'northern-california'; echo "Northern California"; } if(is_tag( 'northern-california' )) { $event_tag = 'northern-california'; echo "Northern California"; } /* other regions omitted for brevity */ if(is_tag( 'seminar' )) { $event_tag = 'seminar'; echo "Seminars"; } /* other event types omitted for brevity */ /* i think this below is a sloppy way to close the div */ if(has_tag( 'northern-california' || 'southern-california' || 'nevada' || 'webinar' || 'seminar' || 'industry-events')) { echo ''; } 

Atualização 1

Com base em uma resposta, adicionei isso nas minhas functions.php

 function event_tag_url() { add_filter( 'query_vars', function( $eventVars ) { $eventVars[] = 'eventTag'; return $$eventVars; }, 10, 1 ); } 

Então na minha category.php eu mudei para uma instrução switch

 switch( get_query_var( 'eventTag' ) ) { case 'california': $eventTag = 'california'; echo "California"; break; case 'northern-california': $eventTag = 'northern-california'; echo "Northern California"; break; case 'southern-california': $eventTag = 'southern-california'; echo "Southern California"; break; case 'seminar': $eventTag = 'seminar'; echo "Seminars"; break; default: $eventTag = 'all'; break; } 

Isso não está fazendo eco de nada. e ainda não parece resolver o problema do que acontece quando você tem várias tags. Acho que a solução deve procurar qual tag a página está configurada?

Solutions Collecting From Web of "Aninhando se declarações para ecoar apenas uma seqüência de caracteres com base em qual tag foi filtrada?"

is_tag() retorna se a consulta é para uma página de arquivo de tags existente. Este não é o que você quer usar.

Em vez disso, use get_query_var() .

get_query_var( 'tag' ) examinará a variável de consulta de tag no URL. Por exemplo, se o seu URL for

 https://example.com/?tag=this&other=that 

depois, usando:

  • get_query_var( 'tag' ) retornará this
  • get_query_var( 'other' ) com retorno that

Em vez de usar um monte de ifs, podemos usar a construção do switch PHP.

 //* Use switch instead of a long series of ifs $tag = get_query_var( 'tag' ); switch( $tag ) { case 'northern-california': $tag = 'Northern California'; break; case 'seminar': $tag = 'Seminar'; break; //* Etc. default: $tag = 'All'; break; } //* Do something useful with $tag 

Mas para usar get_query_var() para uma variável de consulta personalizada, precisamos adicionar a consulta var à matriz de nomes de variables ​​que o WordPress recuperará usando a function. Isso pode ir no seu tema functions.php ou em um plugin simples, desde que seja carregado antes de tentar get_query_var() .

O nome da string usado na function get_query_var() deve ser exatamente o mesmo que o nome usado no filtro. Se você quiser usar o eventTag como sua consulta var, então você precisa adicionar isso à matriz query_vars e usá-lo como a consulta var no URL:

 https://example.com/?eventTag=california 

Isto iria no seu arquivo functions.php

 //* Allow custom query var 'tag' add_filter( 'query_vars', function( $vars ) { //* Use whatever custom query var you want, but it needs to be exactly the same $vars[] = 'tag'; $vars[] = 'eventTag'; return $vars; }, 10, 1 ); 

Se você não gosta de usar fechamentos:

 add_filter( 'query_vars', 'wpse_261930_query_vars', 10, 1 ); function wpse_261930_query_vars( $vars ) { $vars[] = 'tag'; return $vars; } 

Não está claro como você estruturaria seu URL para duas tags diferentes.