2010-12-08 91 views
0

我有以下函數在Wordpress中設置幻燈片。它設置了幾個依賴於另一個增量變量$i的變量。我試圖找到一種方法在我的模板文件中調用這些變量,以便顯示它們的值。我正在設想使用類似<?php echo $tzDesc; ?>的東西。在函數之外顯示增量變量{變量}的值

定義的變量如下所示:$tzDesc = $custom["slide{$i}-desc"];它指的是保存在自定義字段中的值。每張幻燈片都有一個類似名稱的自定義字段,只是增量值不同,值爲$i。我可以將它們顯示在這裏$page = "<h2>{$tzTitle}</h2><img src='{$tzImage}' />";這一行,它正確地顯示在我的頁面上,但是我希望更靈活地調用我的模板文件不同部分的值,而不必在函數的該行中定義整個模板文件。

下面是函數:

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); 
    } 
} 

我試圖定義變量的功能之外,在功能全球宣佈他們,但似乎並沒有工作。

我還通過定義$post->tzDesc = $custom["slide{$i}-desc"];並使用<?php $post->ns_tzDesc = $tzDesc; ?>以顯示可變tried adding變量到$交對象(之一,這幾乎作品,但它似乎鬆$i變量,其限定滑動描述返回值(例如,slide1-desc或slide2-desc ...),並且僅返回每個幻燈片的最後一張幻燈片的值。

如何顯示這些變量的值並保持函數的增量性質?

回答

1

$i++;請嘗試以下操作:

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

然後就return $my_vars; 現在退出函數之前,你可以調用函數$x=paginate_slide('YOUR POST');

,並使用值$x[1]['tzTitle'];在那裏你可以期望$ I

值更換1次
+0

2個問題:1)有什麼辦法讓頁面/幻燈片編號保持動態,以便它被函數填充?該功能是自動分頁幻燈片的功能。我的模板文件設置了一個通用模板,而不是每個幻燈片。 2)我應該在哪裏放$ x = paginate_slide('你的POST');`? – mattz 2010-12-08 17:38:09

0

爲什麼你沒有函數返回$ i?

+0

當我這樣做時,我鬆開了分頁,它只顯示一張幻燈片。 – mattz 2010-12-08 17:31:21