是否可以在具有专用模板的子URL端点中列出帖子附件?

时间:2012-01-04 作者:Johan Brook

Wordpress提供用于显示附在帖子或页面上的媒体的模板(attachment.php 以及更多)。它们还显示了漂亮的永久链接,例如:

site.com/projects/a-project/an-attachment/
在哪里projects 是我自定义帖子类型的slugproject. a-project 是职位名称,并且an-attachment 是附加图像的名称。

The functionality I\'m asking for is a sub URL endpoint for listing all post attachments with a dedicated template file. 这将是伟大的永久链接后的附件,不是吗?

例如:

site.com/projects/a-project/attachments/
or
site.com/projects/a-project/images/
有可能吗?如果不是使用permalinks,是否使用某种查询变量?除了显示单个附件外,我以前从未见过Wordpress帖子的其他形式的子URL端点。

提前感谢!

EDIT

一些有趣的资源:

http://johnbeales.com/20090824/endpoints-a-little-secret-for-url-manipulation-in-wordpress/

http://wordpress.org/support/topic/custom-rewrite-approach-with-add_rewrite_endpoint

http://www.rlmseo.com/blog/passing-get-query-string-parameters-in-wordpress-url/

http://codex.wordpress.org/User:DavidHouse/WP_Rewrite_API

URL Design for Sub-Posts?

http://codex.wordpress.org/Template_Hierarchy

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

我想是我自己找到的。现在,我成功地添加了/photos 永久链接URL的端点,例如:

http://mywordpressite.com/projects/a-project/photos
然后是自定义模板,photos.php 将加载并显示–可访问全局$post 变量

有用链接:

在我的functions.php 我为single_templatequery_vars 过滤器并添加了photos 手持终端add_rewrite_endpoint() 作用

// Permalink rewrites/add endpoints
add_filter( \'single_template\', \'project_attachments_template\' );
add_filter( \'query_vars\', \'add_query_vars\');

// You may need to go to wp-admin > Settings > Permalinks and 
// save the changes in order to flush rewrite rules to activate.
add_rewrite_endpoint(\'photos\', EP_PERMALINK);
在文件的下面:

/**
*   Add the \'photos\' query variable so Wordpress
*   won\'t mangle it.
*/
function add_query_vars($vars){
    $vars[] = "photos";
    return $vars;
}


/**
*   From http://codex.wordpress.org/Template_Hierarchy
*
*   Adds a custom template to the query queue.
*/
function project_attachments_template($templates = ""){
    global $wp_query;

    // If the \'photos\' endpoint isn\'t appended to the URL,
    // don\'t do anything and return
    if(!isset( $wp_query->query[\'photos\'] ))
        return $templates;

    // .. otherwise, go ahead and add the \'photos.php\' template
    // instead of \'single-{$type}.php\'.
    if(!is_array($templates) && !empty($templates)) {
        $templates = locate_template(array("photos.php", $templates),false);
    } 
    elseif(empty($templates)) {
        $templates = locate_template("photos.php",false);
    }
    else {
        $new_template = locate_template(array("photos.php"));
        if(!empty($new_template)) array_unshift($templates,$new_template);
    }

    return $templates;
}
请务必访问wp admin中的Permalink页面,以使更改生效。

结束

相关推荐

Attachments without images

我正在使用Attachments 插件,但我相信这个问题适用于常规媒体库。我想做的是有一个“附件”(元数据、标题、标题),但没有与之关联的图像。原因是,我想将附件视为“项目项”,可以是图像或文本块。这可能吗?