• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

高级 WordPress 附件:创建自定义查询

本教程是四部分系列的第二部分,您将在其中学习一些在 wordpress 中处理附件中的图像的技术,这些技术为您提供高级选项。

在本系列中,我将介绍:

  • 为附件分配类别和分类,

  • 按分类查询媒体文件,以便您可以在自定义循环中输出它们,

  • 使用图像的分类查询将它们显示在存档页面上,

  • 将图像添加到类别或分类术语作为类别或术语的“特色图像”

在第 1 部分中,我演示了如何为附件创建新的分类法。在第 2 部分和第 3 部分中,我将向您展示如何创建自定义循环以在模板中显示附件。在本教程中,我将为文档创建一个自定义模板文件,并创建一个循环来显示每个文档的媒体文件的链接。

注意:如果您想将现有类别和标签应用到您的媒体,请参阅我的关于为附件分配类别和标签的教程。

你需要什么

要遵循本教程,您需要以下内容:

  • WordPress的开发安装

  • FTP 访问(或 MAMP 或类似,如果您在本地工作)

  • 代码编辑器

在第 1 部分中,我创建了一个插件来注册分类法,但在这一部分中,我将创建一个自定义主题,它将是 241 的子主题,带有新的模板文件、样式表和函数文件。

如果您使用我在此处完成的步骤创建自定义主题,您还需要确保激活第 1 部分中创建的插件 - 没有它,新模板文件将无法工作。

如果您愿意,您可能只想将插件中的代码复制到主题的函数文件中,尽管我更喜欢在插件中保留自定义帖子类型,因为它们不依赖于主题。本教程的代码包包括插件和新的子主题,只有在安装了 211 时才能使用。

1.创建子主题

第一步是创建子主题。在您的主题目录中创建一个新文件夹,给它一个适当的名称并向其中添加一个新style.css文件。

注意:如果您要将模板添加到现有主题,则可以跳过此步骤。

在样式表中,添加以下内容:


/*
 Theme Name:   WPTutsPlus Advanced Use of Attachments - Part 2
 Theme URI:    https://rachelmccollin.co.uk/wptutsplus-advanced-use-of-attachments-in-wordpress/
 Description:  Theme to accompany Part 2 in tutorial series on advanced use of attachments
 Author:       Rachel McCollin
 Author URI:   http://rachelmccollin.co.uk
 Template:     twentyfourteen
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text domain:  twenty-fourteen-child
*/

@import url("../twentyfourteen/style.css");


这将创建一个新的二十四主题的儿童主题。您无需向此样式表添加任何其他内容。

2.创建模板文件

如果您按照本系列的第一个教程进行操作,要在您设置的分类中显示附件document-category,您需要创建一个分类模板文件。

在您的新子主题中,添加一个名为taxonomy-document-category.php.

在为附件添加自定义循环之前,您需要添加标记以环绕它,您可以从父主题中的文件复制或从下面的代码中获取。

注意:如果您使用自己的主题,请从您的主题模板文件中复制此代码,但不要包含循环内容。


<?php
/**
 * template for displaying documents
 * uses a custom query which displays a link to the atachment file instead of outputting the content
 */ get_header();
?>
<div class="main-content" id="main-content">
 <div class="content-area" id="primary">
   <div class="site-content" id="content" role="main">
     <header class="page-header">
       <?php $queried_object = get_queried_object();
       echo '<h1 class="page-title">Document Category - ' . $queried_object->name . '</h1>'; ?>
     </header><!-- .page-header -->
   </div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar( 'content' ); ?>
</div><!-- #main-content -->

<?php get_sidebar(); get_footer(); ?>


请注意,我曾经get_queried_object在 h1 元素中输出页面的标题。

3.使用 parse_query 向主查询添加附件

默认情况下,主 WordPress 查询不包含附件。解决此问题的一种方法是使用 向模板文件添加新查询WP_Query,但坚持使用主查询更有意义,因为 WordPress 无论如何都会运行它。为此,您使用parse_query过滤器。

因此,您需要将其添加到您的主题中。在您的主题中创建一个functions.php文件,并将以下内容添加到其中:

<?php // add attachments to the main query using parse_query function wptutsplus_add_attachments_to_tax_query() {
    global $wp_query;
    // When inside a custom taxonomy archive include attachments
    if ( is_tax( array( 'document-category', 'gallery-category' ) ) ) {
        $wp_query->query_vars['post_type'] =  array( 'attachment' );
        $wp_query->query_vars['post_status'] =  array( null );

       return $wp_query;
   }

}
add_action('parse_query', 'wptutsplus_add_attachments_to_tax_query');


这使用parse_query过滤器将附件添加到主 WordPress 查询,但仅在显示应用于附件的两种分类法之一的存档时。

4.创建自定义循环

最后,在您在步骤 2 中创建的模板文件中,在结束</header>标记后添加以下内容:

<?php
 if ( have_posts() ) :
 else :
 	// If no content, include the "No posts found" template.
 	get_template_part( 'content', 'none' );
endif;
?>


在这里,我使用的是wp_get_attachment_url()直接链接到文件本身的函数——如果你想链接到附件页面,你可以使用get_attachment_link().

最后,保存您的代码并查看您的存档页面。我在我的网站(我从 Wikipedia 下载)中添加了一些文档,您可以在我的媒体库的屏幕截图中看到:

高级 WordPress 附件:创建自定义查询  第1张    

下面的屏幕截图显示了我的分类中“开源”术语的存档页面document-category如果我单击其中任何一个链接,我将直接进入文档本身。

高级 WordPress 附件:创建自定义查询  第2张    

概括

在本教程中,您学习了如何使用应用于附件的分类法来创建自定义模板并显示上传文档的链接列表。例如,如果您正在开发一个用作文档存储库的站点,这将非常有用。

在下一个教程中,我将演示如何为图像创建自定义模板文件,这将使gallery-category分类中具有给定术语的所有图像变暗。


文章目录
  • 你需要什么
  • 1.创建子主题
  • 2.创建模板文件
  • 3.使用 parse_query 向主查询添加附件
  • 4.创建自定义循环
  • 概括