web-dev-qa-db-fra.com

Comment faire que ma fonction ajoute des variables/valeurs à l'objet $ post?

Comment puis-je ajouter $tzDesc et $tzEmbed (ainsi que d'autres variables) à l'objet $post dans la fonction suivante afin de pouvoir afficher les valeurs dans mes fichiers de thème en insérant <?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 );
    }
}

Si vous savez et pouvez fournir une réponse, merci de bien vouloir préciser la structure du code car ma connaissance du php est très minime et j'ai déjà essayé de le faire sans succès. Merci.

4
matt

Comme n'importe quel autre objet php, vous pouvez ajouter des objets à l'objet $ post comme ceci:

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

Je ne sais pas exactement ce que vous essayez de faire, mais dans une fonction liée à the_post, vous pouvez affecter de nouvelles valeurs et renvoyer l'objet.

function my_func($post) {

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

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

Cependant, dans votre fichier de modèle, vous ne pourrez pas simplement faire écho à $ my_new_val_name comme vous le suggérez ... la fonction the_post () n’extrait pas les valeurs de cette façon. Vous devrez référencer l'objet post explicitement. Comme:

echo $post->my_new_val_name;
8
MathSmath