WordPress 3.5: eigene Galerie mit eingebundenen Bildern funktioniert nicht

Lesezeit: 2 Minuten

Wordpress 35 eigene Galerie mit eingebundenen Bildern funktioniert nicht
Slevin

Ich habe gerade auf WordPress 3.5 aktualisiert, aber das hat einen kleinen Teil meines Codes zum Absturz gebracht: Es gibt eine PHP-Datei, die einen bestimmten Beitrag mit seiner Galerie über AJAX lädt.

Der Code sieht so aus:

<?php

// Include WordPress
define('WP_USE_THEMES', false);
require('../../../../wp-load.php');

$id = $_POST['id'];

// query post with this identifier
query_posts('meta_key=identifier&meta_value=".$id); 
if (have_posts()) :
while (have_posts()) : the_post();

    // add content
    $content = apply_filters("the_content', get_the_content()); 
    echo '<div class="content-inner">'.$content.'</div>';
endwhile;
endif;
?>

Der Beitrag enthält a Kurzwahl. Ich habe meine eigene WordPress-Galerie mit diesem Code erstellt:

remove_shortcode('gallery');
add_shortcode('gallery', 'parse_gallery_shortcode');

function parse_gallery_shortcode($atts) {

    global $post;

    extract(shortcode_atts(array(
        'orderby' => 'menu_order ASC, ID ASC',
        'id' => $post->ID,
        'itemtag' => 'dl',
        'icontag' => 'dt',
        'captiontag' => 'dd',
        'columns' => 3,
        'size' => 'full',
        'link' => 'file'
    ), $atts));

    $args = array(
        'post_type' => 'attachment',
        'post_parent' => $id,
        'numberposts' => -1,
        'orderby' => $orderby
        ); 

    $images = get_posts($args);
    print_r($images);
}

Dies funktioniert mit allen anderen Galerien auf meiner Seite, aber nicht mit den mit Ajax geladenen. Und es hat mit WordPress 3.4 funktioniert.

Gibt es Änderungen in WordPress 3.5, die ich übersehen habe?

Ich habe es herausgefunden: Wenn Sie eine Galerie mit Bildern verwenden, die bereits in die Mediathek hochgeladen wurden, sieht der Galerie-Shortcode so aus was bedeutet, dass Bilder nur mit der Galerie verlinkt (und nicht angehängt) werden, also post_type=attachment funktioniert nicht.

Jetzt verwende ich reguläre Ausdrücke, um die Bild-IDs zu erhalten:

$post_content = $post->post_content;
preg_match('/\/', $post_content, $ids);
$array_id = explode(",", $ids[1]);

Es ist jetzt möglich, alle zu ziehen Galerien oder sogar eine einzelne Galerie Verwendung der $post->ID und get_post_galleries(). Jede Galerie enthält die Bild-ID-Liste in ids sowie eine Liste der Bild-URLs in src. Das Galerieobjekt besteht im Grunde aus den Shortcode-Argumenten, sodass Sie auch auf diese zugreifen können.

if ( $galleries = get_post_galleries( $post->ID, false ) ) {

    $defaults = array (
        'orderby'    => 'menu_order ASC, ID ASC',
        'id'         => $post->ID,
        'itemtag'    => 'dl',
        'icontag'    => 'dt',
        'captiontag' => 'dd',
        'columns'    => 3,
        'size'       => 'full',
        'link'       => 'file',
        'ids'        => "",
        'src'        => array (),
    );

    foreach ( $galleries as $gallery ) {

        // defaults
        $args = wp_parse_args( $gallery, $defaults );

        // image ids
        $args[ 'ids' ] = explode( ',', $args[ 'ids' ] );

        // image urls
        $images = $args[ 'src' ];
    }
}

948490cookie-checkWordPress 3.5: eigene Galerie mit eingebundenen Bildern funktioniert nicht

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

Privacy policy