创建附件页面需要基本URL

时间:2015-12-19 作者:jgraup

如果我上传一个文件名为8.jpg 然后permalink变为http://www.example.com/8 -- 我真的不想这样。如何使附件使用其mime类型作为url的基础?http://example.com/image/8?

add_action(\'init\', function(){
    add_rewrite_endpoint( \'media\', EP_PERMALINK | EP_ATTACHMENT| EP_PAGES  );
    flush_rewrite_rules(true);
} );
我不确定端点是如何工作的,但我可以/media/8 进入帖子。。。

1 个回复
SO网友:Milo

端点用于向现有路由添加额外的查询变量,我认为您只需要一个普通的重写规则:

function wpd_media_image_rewrite_rule() {
    add_rewrite_rule(
        \'^image/([^/]*)/?\',
        \'index.php?post_type=attachment&name=$matches[1]\',
        \'top\'
    );
}
add_action( \'init\', \'wpd_media_image_rewrite_rule\' );
您可能希望在那里循环有效的mime类型,并为每个类型添加一个规则。您还需要刷新重写才能开始工作,但不要使用flush_rewrite_rules 在init上,就像上面的示例一样。规则只有在更改时才应刷新。刷新它们的一种快速方法是访问permalinks设置页面。

您还需要至少进行筛选attachment_link 要为未连接的媒体输出正确的URL,请执行以下操作:

function wpd_media_image_att_link( $link, $post_id ){
    $post = get_post( $post_id );
    if( 0 == $post->post_parent ){
        $link = home_url( user_trailingslashit( \'image/\' . $post->post_name ) );
    }
    return $link;
}
add_filter( \'attachment_link\', \'wpd_media_image_att_link\', 10, 2 );
这里我们检查附件是否没有父级,因为如果附件附加到帖子,它将是父级帖子的子级。您还可以在此处检查mime类型,并使image/ 零件根据类型动态变化。

还有wp_get_attachment_link 如果模板中某处使用了过滤器,则可能需要过滤器的函数。我不认为core admin在任何地方都使用该功能,但我可能错了。

相关推荐

使用cURL将文件下载到wp-Includes/Uploads

我有一个保存帖子的钩子,看起来像这样,它应该根据提供的视频id将youtube缩略图下载到wp包含/上传。但这并不能挽救任何东西。 add_filter( \'save_post\', function () { $video_id = \'VSB4wGIdDwo\'; $path_to_save_thumbnails = \'/wp-includes/upload/\'; $ch = curl_init();