WordPress Timber obteniendo publicaciones de un tipo de publicación personalizada

2 minutos de lectura

avatar de usuario
pelusa

Solo estoy investigando WordPress más Timber y me encontré con un problema que no puedo resolver.

Creé un tipo de publicación personalizado llamado “proyecto”, dentro del cual creé un campo personalizado llamado “categoría_proyecto”. Ese campo personalizado contiene una casilla de verificación de dos opciones (gráfico, diseño web).

La pregunta es ¿qué puedo hacer para mostrar todos los proyectos que contienen el “gráfico” project_category?

Así es como empecé:

plantilla gráfica.php

Creé un archivo graphic.php con esas consultas wp:

$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 );

gráfico.ramita
Luego creo un archivo twig con este ciclo.

{% 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="https://stackoverflow.com/questions/40239810/{{ 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 %}

Con esta solución solo puedo obtener un proyecto. Cuando quiero mostrar más de un proyecto, el proyecto no aparece. Traté de usar “para publicar en proyectos” o “para publicar en post.proyectos”, pero nada funcionó realmente.

¿Qué puedo hacer para mostrar todos los proyectos que contienen el “gráfico” de project_category?

@filnug, ya casi llegas. Creo que hay cierta confusión sobre el envío de vars de PHP a Twig:

gráfico.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 );

archivo ramita:

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

{% endfor %}

¡la mejor de las suertes!

  • Un millón de gracias Jared. Llego un poco tarde para responderte, pero tu comentario me ayudó mucho. Solo tuve que agregar el renderizado de mi plantilla twig (Timber::render( ‘graphic.twig’, $context );) al final de la consulta wp en “graphic.php”.

    – filnug

    25 de noviembre de 2016 a las 16:13


¿Ha sido útil esta solución?