web-dev-qa-db-fra.com

Champ personnalisé dans le modèle TWIG - Plugin de champs personnalisés avancé

Est-ce que quelqu'un sait comment insérer des champs personnalisés (du plugin Advanced Custom Fields) dans un modèle de brindille?

C'est le code que je veux ajouter dans le fichier de brindille.

<img src="<?php the_field('profile_pic'); ?>" />

Et ceci est le codage du fichier de modèle Twig

    {% extends 'layout - tlt.twig' %}

{% block content %}

<br> <br>
    <h1 style="font-weight:bold; font-size:24px;" class="">{{ post.post_title }}</h1>
<br> <br>
    <div class="agent">
        <div class="row">
            <div class="image span2">
                <a href="{{ wp.get_permalink(wp.get_the_ID()) }}">
                    {% if wp.get_the_post_thumbnail(wp.get_the_ID()) %}
                        {{ wp.get_the_post_thumbnail(wp.get_the_ID())|raw }}
                    {% else %}
                        <img src="{{ wp.get_template_directory_uri() }}/assets/img/agent-tmp.png" alt="{{ property.post_title }}">
                    {% endif %}
                </a>
            </div><!-- /.image -->

            <div class="body span4">
                {{ wp.do_shortcode(wp.apply_filters('the_content', post.post_content))|raw }}
            </div><!-- /.body -->

            <div class="info span3">
                <div style="font-size:14px;" class="box">
                    <div style="margin-bottom:7px;" class="phone">
                        <i class="icon icon-normal-mobile-phone"></i>
                        {{ wp.get_post_meta(wp.get_the_ID(), '_tlt_mobile', TRUE) }}
                    </div><!-- /.phone -->

                    <div style="margin-bottom:7px;" class="office">
                        <i class="icon icon-normal-phone"></i>
                        {{ wp.get_post_meta(wp.get_the_ID(), '_tlt_phone', TRUE) }}
                    </div><!-- /.office -->

                    <div style="margin-bottom:7px;" class="email">
                        <i class="icon icon-normal-mail"></i>
                        <a href="mailto:{{ wp.get_post_meta(wp.get_the_ID(), '_tlt_email', TRUE) }}">
                            {{ wp.get_post_meta(wp.get_the_ID(), '_tlt_email', TRUE) }}
                        </a>
                    </div><!-- /.email -->

                     <div style="margin-bottom:7px;" class="location">
                        <i class="icon icon-normal-phone"></i>
                        {{ wp.get_post_meta(wp.get_the_ID(), '_tlt_location', TRUE) }}
                    </div><!-- /.office -->

                    <div style="margin-bottom:7px;" class="location">
                        <i class="icon icon-normal-phone"></i>
                        {{ wp.get_post_meta(wp.get_the_ID(), 'contact_number', TRUE) }}
                    </div><!-- /.office -->

                    <div style="margin-bottom:7px;" class="location">
                   <img src="{{ wp.get_post_meta(wp.get_the_ID(), 'profile_pic', TRUE)}}" alt="image" />
                    </div><!-- /.office -->





                </div><!-- /.box -->
            </div><!-- /.info -->
        </div><!-- /.row -->
    </div><!-- /.agent -->

    {% if properties %}
        <hr>




    {% endif %}
{% endblock %}

J'ai tout fait correctement jusqu'à l'insertion du code dans le fichier .twig. Rien n'a fonctionné.

3
Tharindulucky

Je n'utilise pas Twig, mais je suis à peu près sûr que vous devez transmettre des valeurs plutôt que toutes les fonctions WP du modèle (qui s'exécutent probablement en dehors du contexte de WordPress). Ainsi, votre contrôleur (généralement le modèle WordPress) stockera les résultats des appels WP dans un tableau, puis vous rendrez le modèle Twig avec les valeurs stockées dans le tableau.

[édité pour ajouter]

Vous avez dans votre contrôleur un appel comme suit:

echo View::render( 'single-tlt.twig', array( 
                    'post' => $post, 
                    'properties' => aviators_properties_get_by_agent( get_the_ID() ) 
                     ) 
                 ); 

Changer quelque chose comme ça:

echo View::render( 'single-tlt.twig', array( 
                    'post' => $post, 
                    'properties' => aviators_properties_get_by_agent( get_the_ID() ),
                    'profile_pic' => get_the_field( 'profile_pic' )
                     ) 
                 ); 

Et puis dans votre modèle Twig, vous pouvez ajouter quelque chose comme:

<img src = '{{profile_pic}}'>

0
anu