WordPress Timber erhält Beiträge eines benutzerdefinierten Beitragstyps

Lesezeit: 2 Minuten

Benutzeravatar von filnug
gut

Ich grabe mich gerade in WordPress plus Timber ein und bin auf ein Problem gestoßen, das ich nicht lösen kann.

Ich habe einen benutzerdefinierten Beitragstyp namens „Projekt“ erstellt, in dem ich ein benutzerdefiniertes Feld namens „Projekt_Kategorie“ erstellt habe. Dieses benutzerdefinierte Feld enthält ein Kontrollkästchen mit zwei Auswahlmöglichkeiten (Grafik, Webdesign).

Die Frage ist, was kann ich tun, um alle Projekte anzuzeigen, die die Projektkategorie “Grafik” enthalten?

So habe ich angefangen:

Grafik.php-Vorlage

Ich habe eine Grafik.php-Datei mit diesen wp-Abfragen erstellt:

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

Grafik.Zweig
Dann erstelle ich mit dieser Schleife eine Zweigdatei.

{% 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 %}

Mit dieser Lösung kann ich nur ein Projekt erhalten. Wenn ich mehr als ein Projekt anzeigen möchte, wird das Projekt nicht angezeigt. Ich habe versucht, “for post in projects” oder “for post in post.projects” zu verwenden, aber nichts hat wirklich geklappt.

Was kann ich tun, um alle Projekte anzuzeigen, die die Projektkategorie „Grafik“ enthalten?

@filnug, du hast es fast geschafft. Ich denke, es gibt nur einige Verwirrung darüber, Vars von PHP an Twig zu senden:

Grafik.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-Datei:

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

{% endfor %}

viel Glück!

  • Tausend Dank, Jared. Ich bin ein bisschen spät, um dir zu antworten, aber dein Kommentar hat mir sehr geholfen. Ich musste nur das Rendering meiner Zweigvorlage (Timber::render( ‘graphic.twig’, $context );) am Ende der wp-Abfrage in “graphic.php” hinzufügen.

    – Fülle

    25. November 2016 um 16:13 Uhr


1396010cookie-checkWordPress Timber erhält Beiträge eines benutzerdefinierten Beitragstyps

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy