从下一代图库选择后期预览图像

时间:2013-07-28 作者:Matthias Pospiech

我的网站有一个主题,它使用了文章概述页面中的预览图像。但是,这些图像既不是自动选择的,我过去也没有选择图像。

但是,即使我尝试选择图像。例如,在仅显示以下库的页面中one 我无法为nextgen gallery选择任何图像。我看到的唯一图像是直接在/files.

这些文件是通过媒体库上传的(我不喜欢它,因为它将所有文件放在一个平面目录结构中)。

我的库文件位于子文件夹(及其子文件夹)中/files/gallery.

那么,如何使用图库图像进行后期预览呢?

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

编辑:下面的功能和插件可以工作,但不需要Nexgen galley的最新版本作为设置特色图像的功能:

enter image description here

编辑2:我的插件只是为了练习,我使用了最初发布的函数来创建一个具有OP所需功能的插件。

代码位于Gist.

首先,在所有要显示预览图像的帖子中,必须添加一个名为“gallery\\u id”的自定义字段:

请注意,您无需将NexGEN gallery放入帖子中,您可以使用图库中的图像,即使没有图库附加到帖子中,只需将gallery_id 文章中的自定义字段,您就完成了。

之后,在你的functions.php 放置:

function nextgen_preview_img( $post = null, $linkto = \'post\') {
  if ( intval($post) ) $postid = $post;
  if ( empty($post) ) global $post;
  if ( is_object($post) && ! isset($postid) ) $postid = $post->ID;
  if ( ! intval($postid) ) return;
  $gallery_id = (int)get_post_meta($postid, \'gallery_id\', true);
  if (! intval($gallery_id) ) return;
  global $wpdb;
  $galleries = $wpdb->prefix . \'ngg_gallery\';
  $images = $wpdb->prefix . \'ngg_pictures\';
  $gallery = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $galleries WHERE gid = %d", $gallery_id) );
  if ( $gallery ) {
    if ( intval($gallery->previewpic) ) {
      $thumb = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $images WHERE pid = %d", $gallery->previewpic) );
    } else {
      $thumb = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $images WHERE galleryid = %d ORDER BY sortorder ASC LIMIT 1", $gallery_id) );
    }
    if ( $thumb ) {
      $meta = (array) maybe_unserialize($thumb->meta_data);
      $file = ( isset($meta[\'thumbnail\'][\'filename\']) ) ? \'thumbs/\' . $meta[\'thumbnail\'][\'filename\'] : $thumb->filename;
    }
    $url = site_url( trailingslashit($gallery->path) . $file );
    $img = sprintf(\'<img src="%s" class="nextegen_preview_img" alt="%s" />\', esc_url($url), $thumb->alttext );
    $link = $linkto == \'post\' ? get_permalink($post) : site_url( trailingslashit($gallery->path) . $thumb->filename );
    printf(\'<a href="%s" class="nextegen_preview_a">%s</a>\', $link, $img);
  }
}

This function get the preview image from the NexGEN gallery identified by the custom field \'gallery_id\' attached to a post.

画廊有一些帖子,那么,该功能如何选择要显示的图像?很简单:如果在NexGEN gallery设置中选择了“预览图像”,则将使用该图像,否则将根据您在NexGEN设置中设置的排序顺序使用第一个图像。

结束

相关推荐

Group posts by meta_key

我对meta\\u值分组有问题。查询将查找元键为“company”的帖子。我想要一个独特的颜色列表,如:蓝、红、黄array\\u unique未成功,并且自定义mysql查询也未成功。<?php $args = array( \'category_name\' => $cat_name, \'posts_per_page\' => \'60\', \'paged\' => $current_page,&#x

从下一代图库选择后期预览图像 - 小码农CODE - 行之有效找到问题解决它

从下一代图库选择后期预览图像

时间:2013-07-28 作者:Matthias Pospiech

我的网站有一个主题,它使用了文章概述页面中的预览图像。但是,这些图像既不是自动选择的,我过去也没有选择图像。

但是,即使我尝试选择图像。例如,在仅显示以下库的页面中one 我无法为nextgen gallery选择任何图像。我看到的唯一图像是直接在/files.

这些文件是通过媒体库上传的(我不喜欢它,因为它将所有文件放在一个平面目录结构中)。

我的库文件位于子文件夹(及其子文件夹)中/files/gallery.

那么,如何使用图库图像进行后期预览呢?

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

编辑:下面的功能和插件可以工作,但不需要Nexgen galley的最新版本作为设置特色图像的功能:

enter image description here

编辑2:我的插件只是为了练习,我使用了最初发布的函数来创建一个具有OP所需功能的插件。

代码位于Gist.

首先,在所有要显示预览图像的帖子中,必须添加一个名为“gallery\\u id”的自定义字段:

请注意,您无需将NexGEN gallery放入帖子中,您可以使用图库中的图像,即使没有图库附加到帖子中,只需将gallery_id 文章中的自定义字段,您就完成了。

之后,在你的functions.php 放置:

function nextgen_preview_img( $post = null, $linkto = \'post\') {
  if ( intval($post) ) $postid = $post;
  if ( empty($post) ) global $post;
  if ( is_object($post) && ! isset($postid) ) $postid = $post->ID;
  if ( ! intval($postid) ) return;
  $gallery_id = (int)get_post_meta($postid, \'gallery_id\', true);
  if (! intval($gallery_id) ) return;
  global $wpdb;
  $galleries = $wpdb->prefix . \'ngg_gallery\';
  $images = $wpdb->prefix . \'ngg_pictures\';
  $gallery = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $galleries WHERE gid = %d", $gallery_id) );
  if ( $gallery ) {
    if ( intval($gallery->previewpic) ) {
      $thumb = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $images WHERE pid = %d", $gallery->previewpic) );
    } else {
      $thumb = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $images WHERE galleryid = %d ORDER BY sortorder ASC LIMIT 1", $gallery_id) );
    }
    if ( $thumb ) {
      $meta = (array) maybe_unserialize($thumb->meta_data);
      $file = ( isset($meta[\'thumbnail\'][\'filename\']) ) ? \'thumbs/\' . $meta[\'thumbnail\'][\'filename\'] : $thumb->filename;
    }
    $url = site_url( trailingslashit($gallery->path) . $file );
    $img = sprintf(\'<img src="%s" class="nextegen_preview_img" alt="%s" />\', esc_url($url), $thumb->alttext );
    $link = $linkto == \'post\' ? get_permalink($post) : site_url( trailingslashit($gallery->path) . $thumb->filename );
    printf(\'<a href="%s" class="nextegen_preview_a">%s</a>\', $link, $img);
  }
}

This function get the preview image from the NexGEN gallery identified by the custom field \'gallery_id\' attached to a post.

画廊有一些帖子,那么,该功能如何选择要显示的图像?很简单:如果在NexGEN gallery设置中选择了“预览图像”,则将使用该图像,否则将根据您在NexGEN设置中设置的排序顺序使用第一个图像。

相关推荐

Even/Odd every two posts

我需要每两篇文章显示一个不同的布局,是否可以使用偶数/奇数来实现这一点?<?php while (have_posts()): the_post() ?> <?php if ($wp_query->current_post % 2 == 0): ?> even <?php else: ?> odd <?php endif ?> <?php endwhile