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 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计