Rufen Sie Fotogalerie-Bildwerte am Frontend einer WordPress Meta Box ab

Lesezeit: 6 Minuten

Benutzer-Avatar
Beachtung

Zusammenfassung:

Ich muss meine eigene HTML-Fotogalerie verwenden, um dies zu tun:

  • Mir wurde geraten, MetaBox zu verwenden, also habe ich es gefunden und installiert MetaBox.io-Plugin.
  • Als nächstes generierte ich eine Erweitertes Bild Code über ihre Website und fügte ihn unter functions.php hinzu, damit der Uploader im Backend angezeigt wird.
  • Aber am Front-End habe ich Probleme, die Werte der Bilder abzurufen.

Funktionen.php (MetaBox.io generierter Code):

add_filter( 'rwmb_meta_boxes', 'your_prefix_register_meta_boxes' );

function your_prefix_register_meta_boxes( $meta_boxes ) {
    $prefix = '';

    $meta_boxes[] = [
        'title'   => esc_html__( 'Untitled Field Group', 'online-generator' ),
        'id'      => 'untitled',
        'context' => 'normal',
        'fields'  => [
            [
                'type'             => 'image_advanced',
                'name'             => esc_html__( 'Image Advanced', 'online-generator' ),
                'id'               => $prefix . 'image_advanced_8hswqfsoqai',
                'max_file_uploads' => 40,
            ],
        ],
    ];

    return $meta_boxes;
}

CMS:

Hier ist das Ergebnis bei CMS. Ein neues Bildfeld wird erstellt. CMS-Teil ist fertig:

Geben Sie hier die Bildbeschreibung ein

Frontend:

Dann habe ich diesen Code von MetaBox.io geholt und in index.php abgelegt aber es druckt nichts:

<?php
$images = rwmb_meta( $field_id, array( 'size' => 'thumbnail' ) );
foreach ( $images as $image ) {
    echo '<a href="'.$image['full_url'].'"><img src="'.$image['url'].'"></a>';
}
?>

Meine Fragen sind:

  1. Wie zeige ich die Werte der MetaBox.io-Plugin-Bilder am Frontend (in meinem eigenen HTML) an? Ich brauche sie wie folgt:
<div class="col-lg-6 img-grids mt-lg-0 mt-5 pl-lg-4">
    <img src="<?php%20echo%20get_template_directory_uri().'/assets/images/p1.jpg';%20?>" alt="" class="img-fluid radius-image" />
    <img src="<?php%20echo%20get_template_directory_uri().'/assets/images/p2.jpg';%20?>" alt="" class="img-fluid radius-image" />
</div>
  1. Wie kann ich benutzerdefinierte Felder zu Bildern der WordPress-Mediengalerie hinzufügen (z. B. Überschrift, Unterüberschrift, Untertitel, Fotograf) und wie kann ich diese Werte für jede Bildfolie am Frontend abrufen?
    Geben Sie hier die Bildbeschreibung ein

  • $images = rwmb_meta( $field_id, ... – und $field_id enthält an dieser Stelle den richtigen Wert?

    – CBroe

    1. Juni um 14:20 Uhr


  • @CBroe danke für deine wertvolle Frage. Um Ihre Frage zu beantworten, wird der Fehler “Undefinierte Variable $field_id” ausgegeben. Bitte haben Sie etwas Geduld, ich bin neu bei WordPress, also habe ich alle Codes von ihrer Website ausprobiert, aber die Sache ist, dass ich mir nicht sicher bin, wo ich diesen Code in index.php platzieren soll, da die Dokumentation nicht sehr klar ist 🙁 Kennen Sie eine native Methode mit WordPress für Metabox Backend & CMS?

    – Beachtung

    Vor 2 Tagen

  • Ich würde vermuten, dass Sie einfach die gleiche Feld-ID angeben müssen, die Sie bei der Registrierung des Felds verwendet haben …? $images = rwmb_meta( 'image_advanced_8hswqfsoqai', array( 'size' => 'thumbnail' ) );

    – CBroe

    Vor 2 Tagen

danke, dass Sie meinem Rat gefolgt sind. Also hier sind wir

$images = rwmb_meta ($field_id, array ('size' => 'thumbnail'));

Wir haben den Betrag, den unsere Galerie erhält.

Verwenden Sie gemäß den obigen Codes diesen Code innerhalb der Seitenvorlagendatei oder innerhalb der Schleife.

<div class="col-lg-6 img-grids mt-lg-0 mt-5 pl-lg-4">

<?php

$untitled_meta = rwmb_meta('image_advanced_8hswqfsoqai' , '' , get_the_ID());

foreach ($untitled_meta as $image) {
    ?>

    <img src="<?=%20$image['full_url']%20//%20Or%20Use%20url%20for%20crop%20size%20%20?>" alt="<?= $image['alt'] ?>"
         class="img-fluid radius-image"/>

    <?php
}
?>

Das rwmb_meta Die Funktion hat drei Argumente.

  1. Der erste Wert unserer Feld-ID, der gemäß Ihrer Codestruktur gefielded wird: image_advanced_8hswqfsoqai
  2. Und lassen Sie den nächsten Wert leer, um alle zu erhalten.
  3. Und der letzte Parameter ist die Seiten-ID oder der Beitrag, den ich mit bekommen habe
    get_the_ID() ID der Seite, auf der wir uns gerade befinden.

Um die Seite gemäß Ihrer vorherigen Frage auf dieser Seite zu optimieren und zu verwenden, schreibe ich den folgenden Code und füge ihn bitte ein (natürlich, wenn Sie mit der Seitenvorlage arbeiten möchten)

Schritt 1: Fügen Sie eine Funktion hinzu, um die Meta-Box auf der Seite zu erstellen und zu posten

Geben Sie diesen Code in die functions.php Datei, wie Sie sie kennen

add_filter( 'rwmb_meta_boxes', 'compliance_students_gallery_meta_boxes' );

function compliance_students_gallery_meta_boxes( $meta_boxes ) {

    $meta_boxes[] = [
        'title'   => esc_html__( 'Untitled Field Group', 'online-generator' ),
        'id'      => 'untitled',
        'context' => 'normal',
        'post_types' => ['post', 'page'],
        'fields'  => [
            [
                'type'             => 'image_advanced',
                'name'             => esc_html__( 'Image Advanced', 'online-generator' ),
                'id'               => 'images_untitled',
                'max_file_uploads' => 40,
            ],
        ],
    ];

    return $meta_boxes;
}

Jetzt können Sie sowohl der Seite als auch dem Beitrag eine Bildergalerie hinzufügen

Schritt 2: Zeigen Sie in der Seitenvorlage dieselbe Datei an, die diese enthält Template Name: students Dies gilt natürlich nur für Sie, die die entsprechende Frage an anderer Stelle gestellt haben (diese Seite).

<div class="col-lg-6 img-grids mt-lg-0 mt-5 pl-lg-4">

    <?php

    $untitled_meta = rwmb_meta('image_advanced_8hswqfsoqai' , '' , get_the_ID());

    foreach ($untitled_meta as $image) {
        ?>

        <img src="<?=%20$image['full_url']%20//%20Or%20Use%20url%20for%20crop%20size%20%20?>" alt="<?= $image['alt'] ?>"
             class="img-fluid radius-image"/>

        <?php
    }
    ?>
</div>

Wichtiger Hinweis

Dies sollte der Fall sein, wenn Sie innerhalb des Kreises oder der Hauptseite oder innerhalb der Beiträge anzeigen möchten.

Um die Bildmenge oder eine andere Flüssigkeit anzuzeigen, müssen Sie sie in der WordPress-Abfrage verwenden.

Beispiel für die Verwendung in einer WordPress-Abfrageschleife

<?php

$query = new WP_Query($args);
if ($query->have_posts()) {
    // some code here if you want.
    while ($query->have_posts()) {
        $query->the_post();
        ?>
        <div class="col-lg-6 img-grids mt-lg-0 mt-5 pl-lg-4">

            <?php

            $untitled_meta = rwmb_meta('image_advanced_8hswqfsoqai', '', get_the_ID());

            foreach ($untitled_meta as $image) {
                ?>
                <img src="<?=%20$image['full_url']%20//%20Or%20Use%20url%20for%20crop%20size%20%20%20?>" alt="<?= $image['alt'] ?>"
                     class="img-fluid radius-image"/>
                <?php
            }
            ?>
        </div>
        <?php
    }
}
?>

  • Bitte, ich habe ein zweites Problem. Nach Ihrer Antwort werde ich dies als Antwort markieren. Ich muss benutzerdefinierte Felder zur Mediengalerie hinzufügen, wie mache ich das Backend und Frontend? Ich habe meine Frage bearbeitet und einen Screenshot für Sie gepostet.

    – Beachtung

    gestern

  • Können Sie mir bitte bei meinem zweiten Problem helfen? Übrigens, Sie sind ein Glücksfall, Morteza, die Abfrageschleife ist das, was ich brauchte, und lassen Sie mich erklären, warum. Ich muss die Bilder in einem PHP-Seitentyp und nicht in einem Beitrag abrufen. Bedeutung, get_the_ID() wäre ohne die Abfrageschleife leer, wenn ich mich nicht in einem Beitrag befinde. Gute Arbeit am vollständigen Beispiel.

    – Beachtung

    gestern

  • Hallo, danke für die Erklärung, ich werde auf jeden Fall das zweite Problem erklären, aber ich bin jetzt beschäftigt und ich werde Ihnen eine Nachricht senden, sobald es vorbei ist. Das Seitenelement funktioniert auch dann, wenn es sich nicht innerhalb der Schleife befindet, denn wenn es sich nicht um eine Schleife handelt, gibt WordPress automatisch die ID der Seite zurück, die es zuerst findet. Wie auch immer, ich werde darüber aufklären.

    – Morteza Barati

    gestern

  • ja Morteza 🙂 get_the_ID() funktioniert in einer Seite, aber ich habe einen Sonderfall, wo ich die Galerie nicht in eine PAGE eingefügt habe, sondern in einem POST, der zu einer Kategorie gehört die ich wiederum auf einer Seite abrufe, also war Ihr vollständiges Beispiel ein Lebensretter, also musste ich Beiträge einer Kategorie abrufen, indem ich dies oben in Ihren Code einfügte $args = array('cat' => 8);. Bitte vergessen Sie nicht meine letzte Ausgabe zum Hinzufügen und Abrufen neuer Felder für die Bilder der Mediengalerie.

    – Beachtung

    gestern

  • Soll ich sie als Antwort markieren und dann eine neue Frage öffnen (benutzerdefinierte Felder in Medien)?

    – Beachtung

    gestern

1017060cookie-checkRufen Sie Fotogalerie-Bildwerte am Frontend einer WordPress Meta Box ab

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

Privacy policy