设置附件URL的名称

时间:2014-04-03 作者:kopfschmerz

我有一个问题,我需要修复为带有元数据的图像的附件页生成的URL。

我在一个摄影网站上工作,其中个人照片通过attachment.php.

显示这些照片的URL方案如下所示:

domain.com/project-name/attachment/attachment-name.

如果上载的图像没有任何元数据,则附件URL的最后一部分取自图像的文件名。因此,如果图像是ABCD.jpg, 那么URL是domain.com/project-name/attachment/ABCD. 一切都很好。

但是,如果图像在元数据中有标题,则URL将设置为该标题:domain.com/project-name/attachment/omg-cool-photo.

是否可以使用带有照片的元数据标题,但也可以将为附件设置的URL保留为照片文件名?如果是,如何?

我环顾四周,但我已经看不到这方面的任何东西了。很抱歉,我错过了。

感谢您的帮助!

谢谢

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

你可以钩住add_attachment 并强制slug按如下方式处理文件名:

Update: 要使slug大写,需要在wp_unique_post_slug. 你不能简单地使用strtoupper( $slug ) WordPress在更新函数中清理(小写)。

/**
 * Force attachment slug to ignore title from metadata (if any).
 * 
 * @link http://wordpress.stackexchange.com/q/140132/1685
 * 
 * @param int $post_id
 */
function wpse_140132_attachment_slug_as_file_name( $post_id ) {
    if ( $post = get_post( $post_id ) ) {
        if ( $file = get_attached_file( $post->ID ) ) {
            // Get file name, without extension.
            $slug = pathinfo( $file, PATHINFO_FILENAME );

            // Only update if different to current slug!
            if ( $slug && $slug != $post->post_name ) {
                add_filter( \'wp_unique_post_slug\', \'wpse_140132_attachment_slug_as_file_name_uppercase\', 50 );
                wp_update_post(
                    array(
                        \'ID\' => $post->ID,
                        \'post_name\' => $slug,
                    )
                );
                remove_filter( \'wp_unique_post_slug\', \'wpse_140132_attachment_slug_as_file_name_uppercase\', 50 );
            }
        }
    }
}

add_action( \'add_attachment\', \'wpse_140132_attachment_slug_as_file_name\' );

/**
 * @see     wpse_140132_attachment_slug_as_file_name()
 * 
 * @param   string  $slug
 * @return  string
 */
function wpse_140132_attachment_slug_as_file_name_uppercase( $slug ) {
    return strtoupper( $slug );
}

结束

相关推荐

Featured Images for Tags?

是否可以以某种方式为标记或自定义分类创建特征图像。为了便于解释,我将给出一个可能的功能示例。假设我正在运行一个网站,发布城市中最好的餐厅。我的一些标签可能是伦敦、巴黎、纽约等等。。。我有一个页面可以抓取这些标签并按字母顺序排序。但不仅仅是文本,它还将有标签名(例如伦敦)和该城市的图像。我知道这可以手动完成,但通过将图像附加到标记或自定义分类法,可以使过程变得更简单,尤其是在处理大量标记/自定义分类法时。我认为这可能更像是一个抽象的问题,但我很好奇是否有人遇到过任何成功做到这一点的博客或网站。