是否阻止WordPress为媒体项目保留插件?

时间:2015-02-24 作者:Matt Keys

我正在经历一些奇怪的行为,这显然是WordPress“开箱即用”的结果。

如果我通过媒体管理器上传文件,则称为:services.jpg; 然后尝试使用permalink创建一个页面http://example.com/services/; 鼻涕虫services-2 而是给出,因为附件已经在使用该段塞。

访问http://example.com/services/ 加载附件页。

我没有启用任何插件或在函数中添加任何内容。php修改附件的重写。

以前有人碰到过这个吗?知道从何处开始禁用此功能?

4 个回复
最合适的回答,由SO网友:Matt Keys 整理而成

谢谢大家的回复。我仔细研究了马塞梅克的解决方案,我认为这让我找到了一个更好的解决方案:

add_filter( \'wp_unique_post_slug_is_bad_attachment_slug\', \'__return_true\' );
这就是所需要的一切。这将自动“跳过”任何附件上默认分配的slug。因此,通常可能获得slug“services”的附件现在将获得slug“services-2”。

SO网友:Przemek Maczewski

如果post是附件类型,则可以挂接wp\\u unique\\u post\\u slug(),并将一些字符串附加到原始slug。基于帖子标题的原创slug将保持免费。

在Rachel Baker的评论后更新:原来的slug后缀是一些随机字符串。它不能保证唯一性,但对于简单的用例可能就足够了。

add_filter( \'wp_unique_post_slug\', \'wpse17916_unique_post_slug\', 10, 6 );
function wpse17916_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) {
  if ( \'attachment\' == $post_type )
    $slug = $original_slug . uniqid( \'-\' );
  return $slug;
}

SO网友:Tim Malone

汤姆的评论是正确的,因为这是正常的行为,你无法阻止它。

但你可以在上传/创建内容后更改slug。虽然如果链接在搜索引擎上是已知的/公开的/列出的,你不应该这样做,但如果你只是在上传后偶尔尝试解决这个问题,那么你可以编辑附件的slug(类似于services-attachment), 然后将页面的slug编辑为services.

要执行此操作,请转到“媒体”,单击要编辑的附件下的“编辑”(如果在网格视图中,请单击附件,然后单击“编辑更多详细信息”),然后在顶部您将看到永久链接。。单击此处的“编辑”可以更改段塞。

然后对页面本身重复相同的过程。

SO网友:DigitalDesignDj

我认为您需要做的是使用重定向来防止人们看到媒体项目。这与这里介绍的其他解决方案非常吻合。在媒体项slugs中预先添加一些内容,写入重定向以“摆脱”媒体页。

结束