Wie kann die Ausgabe des WP-Bildergalerie-Shortcodes von einem Plugin angepasst werden?

Wir erstellen ein Plugin, das Posts anzeigt, und wir möchten auch die Bildergalerie anzeigen, wenn sie in einem Post verwendet wird. Allerdings müssen wir die Anzahl der angezeigten Fotos begrenzen? Ist das möglich?

Solutions Collecting From Web of "Wie kann die Ausgabe des WP-Bildergalerie-Shortcodes von einem Plugin angepasst werden?"

Es gibt zwei Möglichkeiten, dies zu tun, aber beide beinhalten das Erstellen einer function, die der vorhandenen Galerie-Shortcode-function ziemlich ähnlich ist …

Du kannst entweder..

  1. Hook auf post_gallery und manipuliere die eingehenden Daten (du kannst die Galerie-Shortcode-function als Basis für den Filter verwenden, falls nötig)
  2. Heben Sie die Registrierung des Galerie-Shortcodes auf und registrieren Sie einen neuen Galerie-Shortcode mit Änderungen (Sie können die vorhandene function auch wieder als Basis verwenden)

Ich habe etwas Ähnliches in diesem Thread gemacht , und ich beziehe mich nur darauf, weil ich den gleichen Ansatz für das folgende Beispiel nehmen werde.

Beispielfilter für den Galerie-Shortcode

 add_filter( 'post_gallery', 'my_post_gallery', 10, 2 ); function my_post_gallery( $output, $attr) { global $post, $wp_locale; static $instance = 0; $instance++; // We're trusting author input, so let's at least make sure it looks like a valid orderby statement if ( isset( $attr['orderby'] ) ) { $attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] ); if ( !$attr['orderby'] ) unset( $attr['orderby'] ); } extract(shortcode_atts(array( 'order' => 'ASC', 'orderby' => 'menu_order ID', 'id' => $post->ID, 'itemtag' => 'dl', 'icontag' => 'dt', 'captiontag' => 'dd', 'columns' => 3, 'size' => 'thumbnail', 'include' => '', 'exclude' => '' ), $attr)); $id = intval($id); if ( 'RAND' == $order ) $orderby = 'none'; if ( !empty($include) ) { $include = preg_replace( '/[^0-9,]+/', '', $include ); $_attachments = get_posts( array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); $attachments = array(); foreach ( $_attachments as $key => $val ) { $attachments[$val->ID] = $_attachments[$key]; } } elseif ( !empty($exclude) ) { $exclude = preg_replace( '/[^0-9,]+/', '', $exclude ); $attachments = get_children( array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); } else { $attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); } if ( empty($attachments) ) return ''; if ( is_feed() ) { $output = "\n"; foreach ( $attachments as $att_id => $attachment ) $output .= wp_get_attachment_link($att_id, $size, true) . "\n"; return $output; } $itemtag = tag_escape($itemtag); $captiontag = tag_escape($captiontag); $columns = intval($columns); $itemwidth = $columns > 0 ? floor(100/$columns) : 100; $float = is_rtl() ? 'right' : 'left'; $selector = "gallery-{$instance}"; $output = apply_filters('gallery_style', "   \n"; return $output; } 

Ändern Sie diese function, um die gewünschten Einschränkungen aufzuerlegen (es ist nur eine Basis).

Sie können den Hook, den ich in wp-includes/media.php innerhalb der Galerie-Shortcode-Callback-function finden (siehe Zeile 763).

http://core.trac.wordpress.org/browser/tags/3.0.1/wp-includes/media.php#L745

Ich hoffe, das hilft.. 🙂

Sie können die Anzahl der Bilder pro Galerie festlegen. Dies kann über die Galerie-Registerkarte in der Medien-Thickbox im Post-Editor konfiguriert werden. Nachdem Sie die Galerie bereits eingefügt haben, können Sie diese bearbeiten, indem Sie die Galerie im visuellen Editor bearbeiten.