【问题标题】:Change wordpress gallery shortcode slug to filename将 wordpress 图库短代码 slug 更改为文件名
【发布时间】:2011-03-16 23:21:33
【问题描述】:

是否可以将附件页面 slug 更改为引用文件名?简而言之...我使用Gallery Shortcode 来构建一个简单的基于页面的图库。

我在上传过程中更改了原始文件名(如 DSC1223.jpg)(更改为 3b1871561aab.jpg),但它不会像 url 中的 slug 一样出现。它仅使用 DSC1223。

还有什么要改的吗?

问候,史蒂夫

最好的方法是在我的functions.php中写这样的东西

function twentyten_filter_wp_handle_upload () {

    $upload =  wp_handle_upload();

}

add_filter( 'wp_handle_upload', 'twentyten_filter_wp_handle_upload', 10, 2);

【问题讨论】:

  • 您需要以某种形式自动执行此操作吗?或者它是一个关闭?一个快速的解决方案是编辑 wp_posts 数据库表中的 post_name 字段 - 您会发现 DSC1223 被保留和使用。
  • 是的,我需要自动化这个。在上传过程中会很棒。

标签: wordpress url gallery slug shortcode


【解决方案1】:

将此添加到hash upload filename plugin,您应该一切顺利;

/**
 * Filter new attachments and set the post_name the same as the hashed
 * filename.
 * 
 * @param int $post_ID
 */
function change_attachment_name_to_hash($post_ID)
{
    $file = get_attached_file($post_ID);
    $info = pathinfo($file);
    $name = trim( substr($info['basename'], 0, -(1 + strlen($info['extension'])) ) );
    wp_update_post(array(
        'ID' => $post_ID,
        'post_name' => $name
    ));
}
add_action('add_attachment', 'change_attachment_name_to_hash');

如果您不确定每行的作用,请不要犹豫!

更新:

这个函数在一个新的附件被保存到数据库之后就连接到add_attachment 事件。从wp_insert_attachment() 中调用此操作。

我们首先获取附件的文件名 (get_attached_file())。然后我们使用原生 PHP 函数pathinfo() 来获取路径组件,并剥离目录路径和文件扩展名。

然后我们调用wp_update_post(),更新数据库中附件的post_name

【讨论】:

  • 如果你能解释你的代码那就太棒了:) 我在 wp-admin/include/media.php 的第 186 行附近找到了正确的代码部分。但我不能找到一种方法来挂钩这个函数,因为我真的不知道如何传递数据。再次感谢... TheDeadMedic 先生!如果我能以某种方式帮助你...我的家是前端:)
  • “我在 wp-admin/include/media.php 中的第 186 行附近找到了正确的代码部分”——这是什么意思?只需将 THIS 答案中的所有代码添加到我的 OTHER 答案中插件代码的底部,就可以了。
  • 当然。我已经合并了你的两段代码,它工作得很好!我的意思是function media_handle_upload() 通常可以完成这项工作。它是标题和标题默认值等的相关代码。它将自己处理文件上传 POST 并创建附件帖子。无法更好地解释它。
  • 你是对的 - media_handle_upload() 完成了这项工作,并且仍然如此 - 这些功能只是“挂钩”到在其过程中运行的操作,并根据您的要求稍微改变一些事情。
  • 好的 TheDeadMedic,谢谢您的解释。对于非程序员来说,很难理解发生了什么。 add_action()、add_filter、钩子。但是一旦你理解了它,Wordpress 就会变得更加灵活。再次感谢您的称职回答。
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多