Passaggio di una variabile da un ciclo FOREACH in un link
Come si può passare una variabile da un ciclo foreach attraverso un link? Ho delle schede che vengono visualizzate correttamente. Il jQuery funziona. Ma quando chiamo la variabile $category nella sezione di ordinamento dei contenuti, $category non ha alcun valore.
<ul id="tabs">
<li id="tab-content-all" class="active-tab">
<a href="javascript:viewTab('content-all');">TUTTO</a>
</li>
<?php
$categories = get_categories('child_of=104');
foreach ($categories as $category) {
$option = '<li id="tab-content-';
$option .= $category->cat_name;
$option .= '"><a href="javascript:viewTab(\'content-';
$option .= $category->cat_name;
$option .='\');">';
$option .= $category->cat_name;
$option .= '</a></li>';
echo $option;
}
?>
</ul><!--fine delle schede-->
<div id="contents-container">
<div id="content-all">
<ul class="gallery">
<?php
/**Ottieni i post per categoria*/
$portfolio_posts = new WP_Query('category_name=portfolio');
/** Inizializza l'output*/
$output = '';
/** Cicla attraverso i post */
while ($portfolio_posts->have_posts()): $portfolio_posts->the_post();
/** Aggiungi l'anteprima all'ancora se presente */
$output .= '<li class="g_image"><a href="' . get_permalink($post->ID) . '">';
$size='medium';
if(has_post_thumbnail($post->ID))
$output .= get_the_post_thumbnail($post->ID,$size);
/** Chiudi il widget*/
$output .= '</a></li>';
endwhile;
echo $output;
?>
</ul> <!--fine della galleria-->
</div><!--fine di TUTTO -->
<?php
$output = '';
$output = '<div id="content-'.$category->cat_name.'">';
?>
<ul class="gallery">"
<?php
$category_name = strtolower($category->cat_name);
/**Ottieni i post per categoria*/
$portfolio_posts = new WP_Query('category_name='.$category_name);
/** Inizializza l'output*/
$output = '';
/** Cicla attraverso i post */
while ($portfolio_posts->have_posts()): $portfolio_posts->the_post();
/** Aggiungi l'anteprima all'ancora se presente */
$output = $category_name;
$output .= '<li class="g_image"><a href="' . get_permalink($post->ID) . '">';
$size='medium';
if(has_post_thumbnail($post->ID))
$output .= get_the_post_thumbnail($post->ID,$size);
/** Chiudi il widget*/
$output .= '</a></li>';
endwhile;
echo $output;
rewind_posts();
?>
</ul> <!--fine della galleria-->
</div><!--fine di TUTTO -->
Il sistema di schede jQuery funziona. Grazie.
Questa è più una domanda di base su PHP, ma comunque abbastanza importante. All'interno del tuo ciclo foreach
, $category
è una variabile definita localmente. Ciò significa che esiste solo all'interno del ciclo foreach
.
Quindi se hai:
foreach ( $categories as $category ) {
// Puoi usare $category quanto vuoi qui dentro
}
// Qui fuori $category cessa di esistere
Questo è semplicemente il modo in cui funzionano i cicli iterativi... Anche se la variabile esistesse ancora al di fuori del foreach
, non avresti modo di sapere quale $category
stai referenziando.
A giudicare dal contesto, la $category
che ti interessa è quella del tuo portfolio (immagino abbia un ID di categoria 104, basandomi sul tuo codice precedente).
Puoi comunque recuperare questa categoria in base al suo ID, assicurati solo di darle un nome univoco invece di $category
:
$parent_category = get_category( 104 );
$parent_category_name = $parent_category->name;
E poi puoi proseguire senza problemi.
