如何组织多个图库的照片?

时间:2013-08-31 作者:Eric

我在一个网站上工作,最终将有几十个照片库,每个库至少有3-4张照片,可能多达20张。个人照片不会有标题、标题或任何其他元数据;它们都是属于画廊的图片。(单个画廊确实有标题、描述等)

我不知道如何在Wordpress中最好地设置它。我使用的是WCK自定义字段,我对自定义页面、分类法等都很熟悉。因为照片没有任何元数据,所以为照片创建自定义页面类型似乎有些过头了。但也许我会这样做,然后再创建一个名为“图库”的自定义页面类型,让用户选择哪些照片属于图库?

或者我只是将图库设置为自定义页面类型,然后让用户从媒体库中选择多张照片放入图库?那么,我不会为照片创建单独的页面类型,但如何让用户从媒体库中选择多张照片添加到图库?

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

最近我正在使用此工作流:

为附件注册自定义分类法使用一些代码添加mass assign taxonomy terms to uploaded images

(因为我经常执行这两项任务,所以我创建了一个插件来实现它们以及更多see here)

在插件中创建一个shorcode,如下所示[gallery_term tag="landscapes, still_life"]. 此短代码接受作为shorcode参数传递的标记,并在WP_Query 具有meta_query 检索图像并输出它们。

完成后,我只需上传图像,并为它们所属的每个库分配一个标签(使用我的插件进行批量分配很容易)。创建帖子(或页面或cpt)并使用快捷码<就这些了。

此工作流功能强大且灵活:

我可以在任何地方拥有图库:页面、帖子、自定义帖子类型,甚至边栏。我可以使用post(或pages或cpt)标题、内容、分类法和;库详细信息的自定义元wp core features: 坚实且经得起未来考验我的工作流中有一个很好的部分是通过shortcode函数完成的,它是这样的:

add_shortcode( \'gallery_term\', \'show_gallery_term\' );

function show_gallery_term( $atts ) {
  extract( shortcode_atts( array(
    \'tax\' => \'media-tag\', // this is the name of taxonomy registered by my plugin
    \'tags\' => \'\',
    \'qv\' => \'\', // query vars
    \'template\' => \'gallery.php\', \'item_template\' => \'gallery-item.php\',
    \'wrap\' => 1, \'wrap_class\' => \'gallery-wrap\',
    \'class\' => \'gallery\', \'item_class\' => \'gallery-item\',
    \'th_size\' => \'thumb\',
    \'link\' => 1, \'link_size\' => \'full\', \'link_rel\' => \'\', \'permalink\' => \'\'
  ), $atts ) );
  // parse query vars
  $qv = wp_parse_args($qv, \'order_by=menu_order&posts_per_page=-1&post_mime_type=image/jpeg,image/gif,image/jpg,image/png\');
  // force some query vars
  $qv[\'post_type\'] = \'attachment\';
  $qv[\'post_status\'] = \'inherit\';
  $qv[\'paged\'] = get_query_var(\'paged\') ? : 1;
  // the taxonomy query
  if ( $tax && in_array( $tax, get_object_taxonomies(\'attachment\')) && ! empty($tags) ) {
    $qv[\'meta_query\'] = array( array(
      \'taxonomy\' => $tax, \'field\' => \'slug\', \'terms\' => $tags, \'operator\' => \'IN\'
    ) );
  }
  $images = new WP_Query($qv);
  if ( $images->have_posts() ) {
    $template = apply_filters(\'def_gallery_template\', $template);
    global $gallery_query, $gallery_atts;
    $gallery_query = $images;
    $gallery_atts = $atts;
    ob_start();
    if ( ! locate_template($template, true, false) ) { // use a template file to display gallery
      if ($wrap) echo \'<div class="\' . esc_attr($wrap_class) . \'">\';
      echo \'<ul class="\' . esc_attr($class) . \'">\';
      $item_template = apply_filters(\'def_gallery_item_template\', $item_template);
      while ( $images->have_posts() ) :
        $images->the_post();
        if ( ! locate_template($item_template, true, false) ) { // use a template file to display gallery items
          echo \'<li class="\' . esc_attr($item_class) . \'">\';
          $th = wp_get_attachment_image_src( get_the_ID(), $th_size);
          $title = esc_attr( get_the_title() );
          $rel = $link_rel ? \' rel="\' . esc_attr($link_rel) . \'" \' : \'\';
          $link_format = \'<a href="%s" title="%s"%s>\';
          if ($link) { // link to another size
            $big = wp_get_attachment_image_src( get_the_ID(), $link_size);
            printf($link_format, $big[0], $title, $rel);
          } elseif ( $permalink ) { // link post attachment permalink
            printf($link_format, get_permalink(), $title, $rel);
          }
          printf(\'<img src="%s" alt="%s" width="%d" height="%d" />\', $th[0], $title, $th[1], $th[2]);
          if ( $link || $permalink ) echo \'</a>\';
          echo \'</li>\';
        }
      endwhile;
      echo \'</ul>\';
      if ($wrap) echo \'</div>\';
    }
    unset($gallery_query, $gallery_atts);
    wp_reset_postdata();
    return ob_get_clean();
  }
}
该功能提供了巨大的灵活性,事实上:

我可以使用该文件gallery.php 在当前主题中输出mygallery(使用全局$gallery_query 变量)。如果我想使用其他模板I can change it passing name via shortcode param or via a filter.gallery-item.php 但我也可以通过快捷码或过滤器进行更改。使用此模板,可以在全局$post变量中访问Attachment post,因此所有模板标记都可以工作,也可以不使用任何模板,让函数输出html。在这种情况下,有很多选项可以配置生成的html[gallery_term tag="atag"] 并且不要创建任何模板文件。。。它起作用了

结束

相关推荐

Paginate Gallery

我正在使用默认的WordPress Gallery(以及Cleaner Gallery插件)来显示一些图像。画廊似乎没有的一件事是分页。我想做的是在6张图片之后添加上一个和下一个链接来浏览页面。话虽如此,有几个插件声称添加了此功能,但它们都是在没有新媒体库的情况下开发的,而新媒体库是WordPress 3.5的标准配置。我不想改变用户的体验。。。我只是想通过函数添加功能。php或循环本身。我可以将同样的东西应用到所有的库中,因此如果修复程序能够以某种方式找到库的短代码,那就太棒了!不知道该怎么做,只是在这