2010-12-08 11 views
0

私はWordpressでスライドショーを設定する次の関数を持っています。別の増分変数$iに依存するいくつかの変数を設定します。テンプレートファイルにこれらの変数を呼び出す方法を見つけようとしているので、値が表示されます。私は<?php echo $tzDesc; ?>のようなものを使用しています。インクリメンタル変数の値を表示する{変数}関数の外に

定義済みの変数は、次のようになります。$tzDesc = $custom["slide{$i}-desc"];カスタムフィールドに保存されている値を参照しています。各スライドには、似たような名前のカスタムフィールドがインクリメンタルナンバー($iの値)だけ異なっています。私はこの行にここに表示することができます$page = "<h2>{$tzTitle}</h2><img src='{$tzImage}' />";と私のページに正しく表示されますが、私のテンプレートファイルのさまざまな部分で値を呼び出すよりも、関数のその1行にテンプレートファイル全体を定義する。ここで

は関数である。

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

私は関数の外で変数を定義し、グローバルとしての機能でそれらを宣言しようとしたが、それは動作するようには思えません。

私は。tried adding $ポストオブジェクト(への変数の1 $post->tzDesc = $custom["slide{$i}-desc"];を定義し、変数を表示する<?php $post->ns_tzDesc = $tzDesc; ?>を使用しても、このほとんど作品を持っているが、に説明をスライド定義$i変数を失うように見えます

これらの変数の値を表示したり、関数のインクリメンタルな性質を維持するにはどうすればよいですか?(例:slide1-descまたはslide2-desc ...)

答えて

1

012以降次のことを試してください。

$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');

を呼び出すことができ、あなたが希望$ I

の値に1を置き換えることができ $x[1]['tzTitle'];として値を使用します
+0

2つの質問:1)ページ/スライド番号を動的に保持して、機能によって埋められるようにする方法はありますか?この機能は、スライドに自動的に改ページする機能です。私のテンプレートファイルは、各スライドのテンプレートではなく、一般的なテンプレートを設定します。 2)どこで '$ x = paginate_slide( 'YOUR POST');? – mattz

0

なぜ$ iを返す関数がありませんか?

+0

私がページングを緩めると、1つのスライドだけが表示されます。 – mattz

+0

私は最後の '{'の前に$ iを関数の最後に戻したところに移動しました。私は自分のスライドを戻しましたが、すべてのスライドに対して同じ値を表示しています。 – mattz