【问题标题】:How to use custom post types with Timber for WordPress如何在 WordPress 的 Timber 中使用自定义帖子类型
【发布时间】:2018-02-20 21:32:54
【问题描述】:

我正在尝试将自定义帖子类型与我创建的木材一起使用。我使用 CPT UI 插件创建了一个自定义帖子类型。我已使用 ACF Pro 将我想要的字段分配给此自定义帖子类型。我遇到的麻烦是使用 Timber 将此自定义帖子类型呈现到页面上。

functions.php文件:

function add_to_context( $context ) {
        $context['foo'] = 'bar';
        $context['stuff'] = 'I am a value set in your functions.php file';
        $context['notes'] = 'These values are available everytime you call Timber::get_context();';
        $context['menu'] = new TimberMenu();
        $context['site'] = $this;
        // Social Media Links CPT (Main)
        $context['social_media_links__main'] = Timber::get_posts('post_type=social_media_link');
        return $context;
    }

如果我这样做,请在我的页面上:

{{dump(social_media_links__main)}}

我会得到这个:

class Timber\Post#1092 (58) {
    public $ImageClass =>
    string(12) "Timber\Image"
    public $PostClass =>
    string(11) "Timber\Post"
    public $TermClass =>
    string(11) "Timber\Term"
    public $object_type =>
    string(4) "post"
    public $custom =>
    array(20) {
      '_edit_last' =>
      string(1) "1"
      'social_media_links_0_social_media_url' =>
      string(7) "youtube"
      '_social_media_links_0_social_media_url' =>
      string(19) "field_5a8ad0ba8f0db"
      'social_media_links_0_social_media_icon' =>
      string(14) "fab fa-youtube"
      '_social_media_links_0_social_media_icon' =>
      string(19) "field_5a8ad0d68f0dc"
      'social_media_links' =>
      string(1) "4"
      '_social_media_links' =>
      string(19) "field_5a8ad08b8f0da"
      '_edit_lock' =>
      string(12) "1519061667:1"
      'social_media_links_1_social_media_url' =>
      string(7) "twitter"
      '_social_media_links_1_social_media_url' =>
      string(19) "field_5a8ad0ba8f0db"
      'social_media_links_1_social_media_icon' =>
      string(14) "fab fa-twitter"
      '_social_media_links_1_social_media_icon' =>
      string(19) "field_5a8ad0d68f0dc"
      'social_media_links_2_social_media_url' =>
      string(8) "linkedin"
      '_social_media_links_2_social_media_url' =>
      string(19) "field_5a8ad0ba8f0db"
      'social_media_links_2_social_media_icon' =>
      string(18) "fab fa-linkedin-in"
      '_social_media_links_2_social_media_icon' =>
      string(19) "field_5a8ad0d68f0dc"
      'social_media_links_3_social_media_url' =>
      string(8) "facebook"
      '_social_media_links_3_social_media_url' =>
      string(19) "field_5a8ad0ba8f0db"
      'social_media_links_3_social_media_icon' =>
      string(17) "fab fa-facebook-f"
      '_social_media_links_3_social_media_icon' =>
      string(19) "field_5a8ad0d68f0dc"
    }

我可以看到我需要的内容,但是我无法找出正确的语法来循环并检索我需要的数据。我在 ACF 中使用中继器字段,我需要的字段称为 social_media_urlsocial_media_icon

提前感谢您的帮助,非常感谢。

干杯, 罗伯特

【问题讨论】:

    标签: wordpress twig timber


    【解决方案1】:

    你已经看过官方文档中的ACF Guide了吗?

    如果您通过$context['social_media_links__main'] = Timber::get_posts('post_type=social_media_link'); 获取帖子,那么您将获得需要循环访问的一系列帖子。对于每个帖子,您将遍历转发器字段。我想这可能对你有用:

    树枝

    {% for post in social_media_links__main %}
        {% for link in post.meta('social_media_links') %}
            <a href="{{ link.social_media_url }}">
                <span class="{{ link.social_media_icon }}"></span>
            </a>
        {% endfor %}
    {% endfor %}
    

    但是,我是否理解正确,您的自定义帖子类型只有一个帖子,并且在该帖子中您为指向社交媒体配置文件的链接定义了转发器字段?如果您真的只使用一个帖子,ACF Options Page 可能更适合您想要实现的目标。

    【讨论】:

    • 我真的欠你一个!!非常感谢你!这非常适合我的用例。我将根据您的建议检查 ACF 选项,看看这是否会更好地满足我的要求。您是正确的,因为我只有 1 个针对此自定义帖子类型的帖子,并且正在使用转发器字段。再次感谢人;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多