it-swarm.com.de

Standard WP Galerie - Nur Galerien einer bestimmten Kategorie anzeigen

Ich verwende die Standardgalerie von WordPress und füge ihnen Kategorien hinzu. Ich habe jetzt einen Shortcode mit einer Schleife erstellt, um die Galerien auf eine Seite zu bringen:

if(! function_exists('test_shortcode')){
function lv_gallery_style_one_shortcode($atts, $content = null){
    extract(shortcode_atts( array(
        'title'=>'',
        ), $atts) );

        $port=array('post_type' => 'gallery', 'category_name' => 'beach', 'showposts' => -1 );
        $loop=new WP_Query($port);
        while ( $loop->have_posts() ) : $loop->the_post(); 

        // HERE IS THE LOOP

        return $html;
}
add_shortcode('gallery_test', 'test_shortcode' );

Ich weiß, dass die Schleife gut funktioniert hat, da beim Entfernen von 'category_name' => 'beach' alle Kategorien angezeigt werden.

--------------- EDIT: -----------------

Die Galerie, die ich verwende, hat das folgende Symbol und die folgende Option:

 enter image description here 

Ich dachte, dies ist die Standardgalerie für WP, irre ich mich?

Wenn ich eine neue Galerie erstelle, gibt es auf der rechten Seite einen Kategoriebereich:

 Category section 

Wofür wird dies verwendet, wenn ich sie nicht verwenden kann? Ich verstehe nicht.

--------------- EDIT beenden: -------------

Dies ist nur ein Beispielcode. In der vollständigen Version ist der Kategoriename ein Parameter, der in den Shortcode eingegeben werden muss. Deshalb würde ich es gerne so machen.

Irgendwelche Ideen, wie man das zum Laufen bringt?

Anregungen sind willkommen :).

Vielen Dank.

4
Serge Inácio

Was ich vermute, ist, dass dieser Gallery Categories nicht die category Taxonomie ist. Es handelt sich wahrscheinlich um eine registrierte Taxonomie, die vom selben Skript registriert wurde, das den Galerieposttyp hinzugefügt hat.

Um dies herauszufinden, klicken Sie auf den Gallery Categories (im bereitgestellten Bild) und Sie werden zu einer URL wie dieser weitergeleitet:

http://example.com/wp-admin/edit-tags.php?taxonomy=my-taxonomy&post_type=gallery

Überprüfen Sie das Argument taxonomy. Wenn es sich nicht um category handelt, verwenden Sie eine benutzerdefinierte Taxonomie und müssen Ihrem tax_query einen WP_Query hinzufügen. So geht's:

Ihre Argumente würden sich einfach ändern:

$port=array('post_type' => 'gallery', 'category_name' => 'beach', 'showposts' => -1 );

Dazu:

$port = array(
     'post_type' => 'gallery', 
     'showposts' => -1,
     'tax_query' => array (
          array(
              'taxonomy' => 'my-taxonomy',
              'field'    => 'slug',
              'terms'    => 'beach',
          )
     )
);

Randnotiz:

Stellen Sie sicher, dass Sie wp_reset_postdata(); direkt vor dem return $html; verwenden. Dadurch wird die Abfrage zurückgesetzt und sichergestellt, dass sich Ihr Shortcode nicht auf andere Abfragen auf der Seite auswirkt.

Alles erledigt.

2
Jack Johansson

Aus Ihrer Frage geht hervor, dass Sie mit einer Standard-WordPress-Installation arbeiten. Dies bedeutet, dass es no post-type namens 'gallery' gibt. Wenn Sie (oder ein Plugin) eines erstellt haben, was durchaus möglich ist , können Sie Folgendes ignorieren, da ich in diesem Fall nicht wissen kann, was passiert oder wie Sie auf Code aufbauen sollen, den ich nicht kenne.

Aus der Tatsache, dass Sie einen Shortcode erstellen möchten, geht hervor, dass Sie Bilder in einen normalen Beitrag oder eine Seite einfügen möchten, aber anstatt die Bilder wie im Standard-Galerie-Shortcode aufzulisten, möchten Sie ein Kategorie und WP müssen Bilder mit einer bestimmten Bezeichnung einfügen.

Versuchen wir zunächst zu verstehen, was gerade mit Ihrem Code passiert. Wie Sie den wp_query-Spezifikationen entnehmen können, lautet der Standard-post_type 'post' . Wenn Sie also eine nicht vorhandene post_type-ähnliche Galerie verwenden, wird stattdessen "post" verwendet. Es gibt jedoch keine Standardkategorie . Wenn Sie also einen category_name angeben, der nicht vorhanden ist, gibt die Abfrage null Ergebnisse zurück.

Schauen wir uns als Nächstes an, wie WP mit Medien umgeht. Jedes Bild wird als Beitrag mit dem Typ "Anhang" gespeichert. Dieser Beitrag hat einen Ausweis. Der Standard-Galerie-Shortcode ist im Grunde eine Liste von IDs. Leider gibt es beim Hochladen eines Bildes keine Möglichkeit, ihm eine Kategorie zuzuweisen. Sie können also keine Bilder nach Kategorie abrufen. Dies kann jedoch leicht behoben werden :

function wpse295373_add_categories_to_attachments() {
    register_taxonomy_for_object_type ('category', 'attachment');
    }
add_action ('init', 'wpse295373_add_categories_to_attachments');

Jetzt haben Sie die Möglichkeit, Bildern beim Hochladen eine Kategorie zuzuweisen. So können Sie auch die Kategorie verwenden, um sie in Ihrem Shortcode abzurufen:

$port=array('post_type' => 'attachment', 'category_name' => 'beach', 'showposts' => -1 );

Das sollte alle Bilder aus der Strandkategorie zurückgeben.

Aus Ihrer Frage ist nicht ersichtlich, ob Sie dies wünschen. Vielleicht meinst du damit, dass du Galerien mit Bildern hast, die du abrufen möchtest. Sie haben also eine Galerie mit dem Namen "Spanien" in der Kategorie "Strand", die fünf Bilder enthält, eine weitere Galerie mit dem Namen "Frankreich" und so weiter. Wenn Sie das möchten, müssen Sie in der Tat Ihren eigenen post_type erstellen.

2
cjbj