donglu9743 2016-10-25 12:19
浏览 27
已采纳

WordPress Timber获得自定义帖子类型的帖子

I'm just digging into WordPress plus Timber and I came upon a problem that I can't resolve.

I have created a custom post type called "project", within which I created a custom field called "project_category". That custom field contains a checkbox of two choices (graphic, web design).

The question is what can I do to display all the projects that contains the project_category "graphic"?

Here is how I started:

graphic.php template

I created a graphic.php file with those wp queries:

$context = Timber::get_context();

$args = array(
    // Get post type project
    'post_type' => 'project',
    // Get all posts
    'posts_per_page' => -1,
    // Gest post by "graphic" category
    'meta_query' => array(
        array(
            'key' => 'project_category',
            'value' => 'graphic',
            'compare' => 'LIKE'
        )
    ),
    // Order by post date
    'orderby' => array(
        'date' => 'DESC'
    ),
);

$posts = Timber::get_posts( $args );
$context['graphic'] = Timber::get_posts('$args');

Timber::render( 'graphic.twig', $context );

graphic.twig Then I create a twig file with this loop.

{% extends "base.twig" %}

{% block content %}

<div class="l-container">

    <main role="main">
        <div class="l-row">
            <h1>My graphic design projects</h1>

            {% for post in posts %}

                <a href="{{ post.link }}" class="project-images l-col l-col--1-of-4 l-col--m-1-of-2">
                    <h2>{{ post.title }}</h2>

                        {% if post.thumbnail %}
                            <img src="{{post.get_thumbnail.src('medium_large')}}" alt="{{post.title}}" />
                        {% endif %}
                </a>

            {% endfor %}
        </div> 
    </main>

</div>

{% endblock %}

With this solution I can get only one project. When I want to display more than one project the project doesn't show up. I tried to use "for post in projects" or "for post in post.projects", but nothing worked out really.

What can I do to display all the projects that contains the project_category "graphic"?

  • 写回答

1条回答 默认 最新

  • doudao7511 2016-11-01 13:14
    关注

    @filnug, you're almost there. I think there's just some confusion about sending vars from PHP to Twig:

    graphic.php:

    $context = Timber::get_context();
    $args = array(
    // Get post type project
    'post_type' => 'project',
    // Get all posts
    'posts_per_page' => -1,
    // Gest post by "graphic" category
    'meta_query' => array(
        array(
            'key' => 'project_category',
            'value' => 'graphic',
            'compare' => 'LIKE'
        )
    ),
    // Order by post date
    'orderby' => array(
        'date' => 'DESC'
    ));
    
    $context['graphics'] = Timber::get_posts( $args );
    

    twig file:

    {% for post in graphics %}
        <h2>{{ post.title }}</h2>
        (other markup goes here)
    
    {% endfor %}
    

    best of luck!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀