Cum să transmiți o variabilă dintr-o buclă FOREACH într-un link
Cum aș putea transmite o variabilă dintr-o buclă foreach, printr-un link? Am file care se afișează corect. jQuery funcționează. Dar când apelez variabila $category în zona unde se sortează conținutul, $category nu are nicio valoare.
<ul id="tabs">
<li id="tab-content-all" class="active-tab">
<a href="javascript:viewTab('content-all');">TOATE</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><!--sfârșitul filelor-->
<div id="contents-container">
<div id="content-all">
<ul class="gallery">
<?php
/**Obține postările după categorie*/
$portfolio_posts = new WP_Query('category_name=portfolio');
/** Inițializează output-ul*/
$output = '';
/** Parcurge postările */
while ($portfolio_posts->have_posts()): $portfolio_posts->the_post();
/** Adaugă thumbnail la anchor dacă există */
$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);
/** Închide widget-ul*/
$output .= '</a></li>';
endwhile;
echo $output;
?>
</ul> <!--sfârșitul galeriei-->
</div><!--sfârșitul TOATE -->
<?php
$output = '';
$output = '<div id="content-'.$category->cat_name.'">';
?>
<ul class="gallery">"
<?php
$category_name = strtolower($category->cat_name);
/**Obține postările după categorie*/
$portfolio_posts = new WP_Query('category_name='.$category_name);
/** Inițializează output-ul*/
$output = '';
/** Parcurge postările */
while ($portfolio_posts->have_posts()): $portfolio_posts->the_post();
/** Adaugă thumbnail la anchor dacă există */
$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);
/** Închide widget-ul*/
$output .= '</a></li>';
endwhile;
echo $output;
rewind_posts();
?>
</ul> <!--sfârșitul galeriei-->
</div><!--sfârșitul TOATE -->
Funcționalitatea de taburi în jQuery funcționează. Mulțumesc.
Aceasta este mai degrabă o întrebare de bază despre PHP, dar este totuși destul de importantă. În interiorul buclei tale foreach
, $category
este o variabilă definită local. Adică, ea există doar în interiorul buclei foreach
.
Deci dacă ai:
foreach ( $categories as $category ) {
// Poți folosi $category cât vrei aici
}
// Aici, în afara buclei, $category încetează să mai existe
Așa funcționează buclele iterative... Chiar dacă variabila ar mai exista în afara buclei foreach
, nu ai cum să știi care $category
o referințezi.
Din câte se pare, totuși, $category
pe care o dorești este categoria ta de portofoliu (presupun că are ID-ul de categorie 104, bazat pe codul tău anterior).
Poți să obții această categorie pe baza ID-ului ei, doar asigură-te că îi dai un nume unic și nu $category
:
$parent_category = get_category( 104 );
$parent_category_name = $parent_category->name;
Apoi poți continua fără probleme.
