最近我正在使用此工作流:
为附件注册自定义分类法使用一些代码添加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"]
并且不要创建任何模板文件。。。它起作用了工作流与javascript无关:在主题中,可以将所需的脚本放入队列,并随它一起疯狂运行。想换主题和换剧本:没问题