it-swarm.com.de

Trennen Sie die Anhangsbilder vom Post-Loop

Ich versuche, eine Reihe von Bildern für ein Diashow-Galerie-Skript zu erstellen. Müssen Sie also die Bilder von der Post-Schleife trennen - haben Sie Ideen, wie Sie dies am besten erreichen und das Hinzufügen von Bildern erleichtern können? Ich kann ein Skript verwenden, um Anhänge zu erfassen (siehe unten), aber es sieht ein bisschen chaotisch aus wie:

  1. das hochgeladene Bild wird im Post-Text-Bereich angezeigt und muss dann gelöscht werden, da es sonst zu Duplikaten kommt.
  2. sie können ein Bild nur löschen, indem Sie in die Medienbibliothek gehen und sie dort löschen.

http://digwp.com/2009/08/awesome-image-attachment-recipes-for-wordpress/

Wäre es die bessere Option, das Plug-In "Mehr Felder" zu verwenden und mehrere Textfelder zu erstellen, um die URLs von Fotos zu veröffentlichen?

Sie nutzen die Medienbibliothek, um Bilder hochzuladen und die URLs für den Beitrag zu erhalten.

Im Idealfall versuche ich, ein einfaches Szenario zu erstellen, in dem die Bilder auf einmal als Galerie oder einzelne Bilder hochgeladen, der Beschreibungstext der Galerie geschrieben und gespeichert werden.

3
david arthur

Die beste Möglichkeit, einem bestimmten Beitrag Bilder zuzuweisen, besteht darin, sie einfach in den WordPress-Bereich für die Bearbeitung/den neuen Beitrag hochzuladen. Sie können dort auch Bilder löschen.

Wenn dies gesagt ist, wäre hier, wie Sie das tun. Sie werden sich in wp_enqueue_script einhängen und wp_enqueue_script aufrufen, um Ihr Galerie-Skript zur Seite hinzuzufügen. Dann verwenden Sie wp_localize_script, der direkt über Ihrem Skript ein Nice-Javascript-Objekt für Sie ausgibt.

Innerhalb Ihrer Hook-Funktion greifen Sie auf die Variable $post zu, die den aktuellen Beitrag enthält. Sie müssen nicht in der Schleife sein, um das zu bekommen. Und wenn Sie das haben, können Sie untergeordnete Beiträge (wie Anhänge) abrufen, was das Abrufen von Bildern außerhalb der Schleife sehr einfach macht.

<?php
add_action( 'wp_enqueue_scripts', 'wpse20321_enqueue_scripts' );
function wpse20321_enqueue_scripts()
{
    // If this isn't a singular post, return -- don't enqueue anything
    if( ! is_singular() ) return;

    // enqueue your gallery script
    wp_enqueue_script( 
        'wpse20321-gallery-script', 
        trailingslashit( get_stylesheet_directory_uri() ) . 'path/to/gallery.js', 
        // use trailingslashit( plugin_dir_url( __FILE__ ) ) . 'path/to/gallery.js' if you're in a plugin
        array( 'jquery' )
    );

    // now we'll get the attachments...
    global $post;
    if( empty( $post ) ) $post = get_queried_object();
    $attachments = get_posts(
        array(
            'post_type'         => 'attachment',
            'post_mime_type'    => 'image',
            'post_status'       => 'inherit',
            'post_parent'       => $post->ID
        )
    );
    if( ! $attachments ) return;
    $out = array();
    $out['img_list'] = array();
    foreach( $attachments as $a )
    {
        $img = wp_get_attachment_image_src( $a->ID, 'full' );
        $out['img_list'][] = array( 
            'image'     => $img[0],
            'width'     => $img[1],
            'height'    => $img[2]
        );
    }

    // call wp_localize_script, which will spit out a Nice JSON for you,
    // right before your enqueued gallery script, ready for use.
    // the object name will be wpse20321
    wp_localize_script( 
        'wpse20321-gallery-script', 
        'wpse20321',
        $out 
    );
}

Sie können dem JS-Objekt alles hinzufügen, was Sie benötigen. Möchten Sie das title-Attribut für das Bild speichern?

foreach( $attachments as $a )
    {
        $img = wp_get_attachment_image_src( $a->ID, 'full' );
        $out['img_list'][] = array( 
            'image'     => $img[0],
            'width'     => $img[1],
            'height'    => $img[2],
            'title'     => $a->post_title
        );
    }
1
chrisguitarguy

In Ihre Funktionsdatei schreiben Sie folgendes:

//gives me different image sizes
if ( function_exists( 'add_image_size' ) ) 
{
add_image_size( 't1x1', 145, 200, true );
add_image_size( 't2x2', 200, 200, true );
add_image_size( 't3x2', 307, 417, true );
add_image_size( 't3x3', 600, 400, true );
add_image_size( 't4x3', 680, 500, true );
}
///////////////////////////////////////////////
// Start  Gallery Function
////////////////////////////////////////////////

function wpo_get_images($size = 'thumbnail', $limit = '0', $offset = '0', $big = 'large', $post_id = '$post->ID', $link = '1', $img_class = 'attachment-image', $wrapper = 'div', $wrapper_class = 'attachment-image-wrapper' , $wrapper2 = 'div' ) {

    global $post;

    $images = get_children( array('post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );

    if ($images) {

        $num_of_images = count($images);

        if ($offset > 0) : $start = $offset--; else : $start = 0; endif;
        if ($limit > 0) : $stop = $limit+$start; else : $stop = $num_of_images; endif;
        $i = 0;

        foreach ($images as $attachment_id => $image) {
            if ($start <= $i and $i < $stop) {

            $img_title = $image->post_title;   // title.

            $img_description = $image->post_content; // description.

            $img_caption = $image->post_excerpt; // caption.

            //$img_page = get_permalink($image->ID); // The link to the attachment page.

            $img_alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true);

            if ($img_alt == '') {

            $img_alt = $img_title;

            }

                if ($big == 'large') {

                $big_array = image_downsize( $image->ID, $big );

                $img_url = $big_array[0]; // large.

                } else {

                $img_url = wp_get_attachment_url($image->ID); // url of the full size image.

                }


            // FIXED to account for non-existant thumb sizes.

            $preview_array = image_downsize( $image->ID, $size );

            if ($preview_array[3] != 'true') {

            $preview_array = image_downsize( $image->ID, 'thumbnail' );

            $img_preview = $preview_array[0]; // thumbnail or medium image to use for preview.

            $img_width = $preview_array[1];

            $img_height = $preview_array[2];

            } else {

            $img_preview = $preview_array[0]; // thumbnail or medium image to use for preview.

            $img_width = $preview_array[1];

            $img_height = $preview_array[2];

            }

            // End FIXED to account for non-existant thumb sizes.
            ///////////////////////////////////////////////////////////

            // This is where you'd create your custom image/link/whatever tag using the variables above.

            // This is an example of a basic image tag using this method.

            ?>

            <?php if ($wrapper != '0') : ?>

            <<?php echo $wrapper; ?> class="<?php echo $wrapper_class; ?>">

            <?php endif; ?>

            <?php if ($wrapper2 != '0') : ?>

            <<?php echo $wrapper2; ?>>

            <?php endif; ?>

            <?php if ($link == '1') : ?>


            <a href="<?php echo $img_url; ?>" title="<?php echo $img_title; ?>">

            <?php endif; ?>

            <img class="<?php echo $img_class; ?>" src="<?php echo $img_preview; ?>" alt="<?php echo $img_alt; ?>" title="<?php echo $img_title; ?>" />

            <?php if ($link == '1') : ?>


            </a>

            <?php endif; ?>

            <?php if ($img_caption != '') : ?>

            <div class="attachment-caption"><?php echo $img_caption; ?></div>

            <?php endif; ?>

            <?php if ($img_description != '') : ?>

            <div class="attachment-description"><?php echo $img_description; ?></div>

            <?php endif; ?>

            <?php if ($wrapper2 != '0') : ?>

            </<?php echo $wrapper2; ?>>

            <?php endif; ?>

            <?php if ($wrapper != '0') : ?>

            </<?php echo $wrapper; ?>>

            <?php endif; ?>

            <?

            // End custom image tag. Do not edit below here.

            ///////////////////////////////////////////////////////////

            }
            $i++;
        }
    }
} 
///////////////////////////////////////////////

rufen Sie dann die Bilder auf, die in einen beliebigen Beitrag hochgeladen wurden:

<ul>

<?php wpo_get_images('t4x3','0','0','slide',"$post->ID",'0','portfolio-photo','li', 'theclass' );?>


</ul>   

sie können sehen, dass Sie verschiedene Optionen einstellen können, z. B. die Bildgröße (die erste Option und einige andere, mit denen Sie spielen können).

0
endle.winters

alle Ihre hochgeladenen Bilder werden in der Medienbibliothek gespeichert. Sie können zum Zeitpunkt eines neuen Beitrags Bildbeschreibungstext schreiben.


Schritte:


posts-> addnew-> upload image-> Choose media Library-> select Image-> Jetzt haben Sie mehr Optionen wie Bild (Titel, Alternativer Text, Beschriftung, Beschreibung, Link URL, Ausrichtung, Größe) -> Dann klicken Sie auf Insert in post -> Alle Änderungen speichern.


Ich hoffe das ist nützlich für dich :)

0
Ramkumar M

Schrecklicher Hack, aber es wird funktionieren:

  1. Platzieren Sie in der Kopfzeile, in der das JSON-Objekt gespeichert werden soll, eine Zeichenfolge und stellen Sie sicher, dass sie eindeutig ist. (generiere zum Beispiel ein uniqid ()).
  2. Sammeln Sie in der Schleife die Bilder und erstellen Sie die JSON-Zeichenfolge in einer Variablen.
  3. Platzieren Sie in Ihrer Vorlage ganz am Anfang der Kopfzeile. Dies schaltet die Ausgabe aus und liest stattdessen die gesamte Ausgabe in den Puffer.
  4. Da Sie keine Ausgabe haben, können Sie die gesamte gerenderte Seite als Zeichenfolge verwenden. Lesen Sie es ganz am Ende der Vorlage (am Ende der Fußzeile) und lesen Sie es mit.
  5. Ersetzen Sie die eindeutige Zeichenfolge durch die JSON-Zeichenfolge. Verwenden Sie ein einfaches $ allpage = str_replace (to_search, to_replace_for, the_string).
  6. Drucken Sie die gepufferte Zeichenfolge. (echo $ allpage).
  7. Deaktivieren Sie die Ausgabepufferung und löschen Sie das Objekt, um Speicherverluste zu vermeiden. (ob_end_flush ())

Wie gesagt schrecklich. Du wärst besser, wenn du einfach doch den JSON am Ende der Seite, zum Beispiel in die Fußzeile, einsammelst, aber die Bilder in der Schleife zu einem String zusammenfasst, der noch steht.

0
petermolnar