web-dev-qa-db-ja.com

関数に$ postオブジェクトに変数/値を追加させるにはどうすればよいですか?

次の関数の$tzDescおよび$tzEmbed(およびその他の変数)を$postオブジェクトに追加して、<?php echo $tzDesc; ?>を挿入してテーマファイルの値を表示できるようにするにはどうすればよいですか。

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

あなたが知っていて答えを提供できるのであれば、私のphpの知識はごくわずかで、何の成功もしないですでにこれをやろうとしているので、コードの構成方法を詳しく説明してください。ありがとう。

4
matt

他のphpオブジェクトと同様に、次のように$ postオブジェクトにアイテムを追加できます。

$post->my_new_val_name = 'my new value';

何をしようとしているのか正確にはわかりませんが、the_postにフックされた関数内で、新しい値を割り当ててオブジェクトを返すことができます。

function my_func($post) {

    $post->my_new_val_name = 'my new value';
    return $post;

}
add_action( 'the_post', 'my_func' );

しかし、あなたのテンプレートファイルでは、あなたが提案しているように$ my_new_val_nameを単にエコーすることはできません…the_post()関数はそのように値を抽出しません。あなたは明示的にpostオブジェクトを参照する必要があります。好きです:

echo $post->my_new_val_name;
8
MathSmath