2010-12-08 80 views
0

I ont la fonction suivante qui met en place un diaporama dans Wordpress. Il définit plusieurs variables qui dépendent d'une autre variable incrémentale $i. J'essaie de trouver un moyen d'appeler ces variables dans mon fichier de modèle afin qu'il affiche leurs valeurs. J'envisage d'utiliser quelque chose comme <?php echo $tzDesc; ?>.Affichage de la valeur d'une variable incrémentale {Variable} En dehors de la fonction

L'aspect variable définie comme ceci: $tzDesc = $custom["slide{$i}-desc"]; où il fait référence à la valeur enregistrée dans un champ personnalisé. Chaque diapositive a un champ personnalisé d'un nom similaire différant seulement par le nombre incrémentiel, la valeur de $i. Je peux les afficher dans cette ligne $page = "<h2>{$tzTitle}</h2><img src='{$tzImage}' />"; et il apparaît sur ma page correctement, mais je veux plus de flexibilité pour appeler les valeurs dans les différentes parties de mon dossier de modèle plutôt que d'avoir à définir l'ensemble du fichier modèle dans cette ligne de la fonction .

Voici la fonction:

add_action('the_post', 'paginate_slide'); 

function paginate_slide($post) { 

    global $pages, $multipage, $numpages; 

    if(is_single() && get_post_type() == 'post') { 

    $multipage = 1; 
    $id = get_the_ID(); 
    $custom = array(); 
    $pages = array(); 
    $i = 1; 

    foreach(get_post_custom_keys() as $key) 
     if (false !== strpos($key, 'slide')) 
      $custom[$key] = get_post_meta($id, $key, true); 

    while(isset($custom["slide{$i}-title"])) { 

     $page = ''; 
     $tzTitle = $custom["slide{$i}-title"]; 
     $tzImage = $custom["slide{$i}-image"]; 
     $tzDesc = $custom["slide{$i}-desc"]; 
     $tzEmbed = $custom["slide{$i}-embed"]; 

     $page = "<h2>{$tzTitle}</h2><img src='{$tzImage}' />"; 
     $pages[] = $page; 
     $i++; 
    } 

    $numpages = count($pages); 
    } 
} 

J'ai essayé de définir les variables en dehors de la fonction et les déclarer dans la fonction globale, mais cela ne semble pas fonctionner.

J'ai aussi tried adding une des variables à l'objet $ post (en définissant $post->tzDesc = $custom["slide{$i}-desc"]; et en utilisant <?php $post->ns_tzDesc = $tzDesc; ?> pour afficher la variable. Cette presque œuvres mais il semble perdre la variable $i qui définit qui coulissent la description de return (par exemple, slide1-desc ou slide2-desc ...) et renvoie simplement la valeur de la dernière diapositive pour chaque diapositive

Comment afficher les valeurs de ces variables et conserver la nature incrémentielle de la fonction?

Répondre

1

après la $i++; les opérations suivantes:

$my_vars[$i]['tzTitle']=$tzTitle; 
$my_vars[$i]['tzImage']=$tzImage; 
$my_vars[$i]['tzDesc']=$tzDesc; 
$my_vars[$i]['tzEmbed']=$tzEmbed; 

puis avant de quitter la fonction juste return $my_vars; maintenant, vous pouvez appeler la fonction $x=paginate_slide('YOUR POST');

et utiliser les valeurs $x[1]['tzTitle']; où vous pouvez remplacer le 1 avec la valeur de choix i

$
+0

2 questions: 1) Est-il possible de garder la page/numéro de la diapositive dynamique il est rempli par la fonction? La fonction est ce qui pagine automatiquement les diapositives. Mon fichier modèle définit un modèle générique, pas un pour chaque diapositive. 2) Où devrais-je mettre '$ x = paginate_slide ('VOTRE POSTE');'? – mattz

0

Pourquoi avez-vous pas le retour de la fonction $ i?

+0

Quand je fais, je perds la pagination et cela montre seulement une diapositive. – mattz

+0

Ok, j'ai déménagé là où j'ai renvoyé $ i à la fin de la fonction avant le dernier '{' et j'ai mes diapositives en arrière, mais il montre toujours la même valeur pour chaque diapositive. – mattz