WP-Abfrage durchläuft den benutzerdefinierten Beitragstyp, der auf der Startseite, aber nicht auf der Suchseite funktioniert

Lesezeit: 3 Minuten

Ich habe zwei benutzerdefinierte Beitragstypen namens Künstler und Gemälde. Beide Beitragstypen haben ein benutzerdefiniertes Feld namens Künstlername erstellt mit dem Advanced Custom Fields-Plugin. Ich muss in der Lage sein, die benutzerdefinierten Felder dieser beiden Beitragstypen miteinander abzugleichen, um weitere Informationen anzuzeigen.

Fügen Sie unten nur die Argumente und die Schleife aus der Abfrage ein. Werde bei Bedarf mehr Code posten.

<?php
$artist_name = get_field('artist');

$args = array(
'post_type' => 'artists',
'meta_value' => $artist_name
);
$query_artist = new WP_Query( $args );

if ( $query_artist->have_posts() ) {
    while ( $query_artist->have_posts() ) {
        $query_artist->the_post(); ?>
        <p class="artist-name"><a href="https://stackoverflow.com/questions/22655828/<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
        <?php }
} else {
    echo 'Artist not found';
}
wp_reset_postdata(); ?>

Dieser Code funktioniert ordnungsgemäß in der Vorlagendatei für die Homepage, gibt aber immer „Künstler nicht gefunden“ aus, wenn er auf der Suchergebnisseite angezeigt wird. Ich habe diesen Code direkt aus der Homepage-Vorlage kopiert, damit Rechtschreibfehler nicht das Problem sind. Zerbreche mir darüber schon lange den Kopf. Wird jemand, der dies liest, eine Ahnung haben, was passiert?

Vielen Dank.

Ok, ich habe es also geschafft, endlich das zu bekommen, was ich arbeiten möchte, aber ich bin mir nicht sicher, warum der folgende Code funktioniert hat und mein Original nicht, da beide ähnliche Methoden sind, um eine neue Abfrage durchzuführen.

Hier der Code, falls noch jemand das gleiche Problem hatte:

<?php
// Permalink for artist
$artist_name = get_field('artist');
global $post;
$posts = get_posts( array( 'post_type' => 'artists', 'meta_value' => $artist_name ) );
if( $posts ):
   foreach( $posts as $post ) :   
    setup_postdata($post); ?>
    <p class="artist-name"><a href="https://stackoverflow.com/questions/22655828/<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
   <?php endforeach; 
wp_reset_postdata(); 
endif; ?>

  • wie bekomme ich auch das Beitragsbild?

    – Chaudhry Waqas

    15. Juli 2016 um 23:25 Uhr

Ich denke, dass WordPress benutzerdefinierte Typen nicht automatisch in die Suche einbezieht.

Sie können ein Plugin wie verwenden https://wordpress.org/plugins/advanced-custom-post-search/ oder schreiben Sie Ihre eigene Funktion in die functions.php

function rc_add_cpts_to_search($query) {     
    // Check to verify it's search page
    if( is_search() ) {
        // Get post types
        $post_types = get_post_types(array('public' => true, 'exclude_from_search' => false), 'objects');
        $searchable_types = array();
        // Add available post types
        if( $post_types ) {
            foreach( $post_types as $type) {
                $searchable_types[] = $type->name;
            }
        }
        $query->set( 'post_type', $searchable_types );
    }
    return $query;
}
add_action( 'pre_get_posts', 'rc_add_cpts_to_search' );

Beispiel aus http://www.remicorson.com/include-all-your-wordpress-custom-post-types-in-search/

  • Hi. Ich verwende ein Plugin namens WP Custom Search, um diese Suchseite auszuführen. Hatte basierend auf der Suche den richtigen Inhalt ausgegeben, aber nachdem ich Ihren Code zu meiner functions.php hinzugefügt hatte, führten alle Suchanfragen zu einer Meldung „Ergebnisse nicht gefunden“.
    Ich möchte, dass die Ergebnisse auf der Suchseite einen benutzerdefinierten Beitragstyp durchlaufen und den Wert aus einem benutzerdefinierten Feld in einem anderen benutzerdefinierten Beitragstyp abrufen.

    – NJT

    31. März 2014 um 11:38 Uhr


1283790cookie-checkWP-Abfrage durchläuft den benutzerdefinierten Beitragstyp, der auf der Startseite, aber nicht auf der Suchseite funktioniert

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

Privacy policy