Cum să transmiți o variabilă dintr-o buclă FOREACH într-un link

7 iun. 2012, 21:40:51
Vizualizări: 2.86K
Voturi: 0

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.

1
Comentarii

Închis prin vot ca off-topic. Aceasta este o întrebare despre PHP, nu o întrebare despre WordPress.

Chip Bennett Chip Bennett
8 iun. 2012 00:48:04
Toate răspunsurile la întrebare 1
0

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.

7 iun. 2012 23:34:02