Post/page without slug

时间:2014-09-08 作者:Sarah Kemp

我的帖子都是带有页面内容和图片等的完整帖子。然后我还有可能在将来发布的帖子,我仍然想在我的分类页面上列出这些帖子,但这些帖子还没有内容,也不值得拥有自己的页面。我希望能够将它们的slug设置为nothing,或者设置为可以查询的标准“null”类型的值,这样就不会向页面存根添加链接。

我在这个主题上找到的所有东西都是关于如何删除自定义post类型的slug或Wordpress文档中的存根。

有没有办法制作实际上没有永久链接的“存根”帖子?(db中没有post\\U名称)

感谢阅读。

Edit

澄清一下,我并不是要对公众隐瞒这些帖子。我希望它们显示在我的分类页面上,没有指向单个帖子页面的链接。除了没有链接之外,它们应该像一篇完整的、完成的文章。从概念上讲,它们是已发表的帖子,只是还没有充实起来。

然而,在某些地方,我需要能够分别查询所有已完成的帖子或所有存根。

Why?

我有一张地图,上面显示了所有贴子、成品和存根的位置。我希望它们都能显示在地图上,但只有那些写得完整的才应该有一个指向“单一”页面的链接。存根应该只显示在地图上,而没有链接。在将来的某个时候,我会回到一些存根并写更多关于它们的内容,届时它们也会得到一个链接。

我认为,将slug留空是一种透明的方式,表明存根没有自己的页面。我还担心,当我试图列出存根时,将其标记为草稿会产生后果。

我还在工作流程中使用post状态,因此将草稿状态重新用于实际草稿状态以外的其他状态会导致混淆。我将改用Review Pending,但也许您可以理解为什么我要寻找更多的解决方案,而不是解决方法。

TL;博士

3 个回复
最合适的回答,由SO网友:Sarah Kemp 整理而成

add_filter(\'wp_unique_post_slug\', \'my_unique_slug\', 1, 5);
function my_unique_slug($slug, $post_ID, $post_status, $post_type, $post_parent = 0){
    $p = get_post_field(\'post_content\', $post_ID);
    if($p){
        return $slug;
    }
    return \'NULL\';
}
这基本上覆盖了Wordpress的默认唯一post slug逻辑,并允许您复制“NULL”值。不幸的是,如果您不为slug赋予一些值,它将忽略一个空白或真空值,并使用Wordpress的自动slug创建逻辑。然而,在不影响工作流的情况下,仍然可以很容易地将存根与页面区分开来,并且可以很容易地按名称查询帖子。

FWIW发送给未来的搜索者。

这个问题中的其他帖子建议不要删除slug或覆盖它。我想这就是为什么它被否决的原因。

SO网友:vancoder

如果你使用的是相当长的链接,那么所有的帖子都会有slug。

如果您想列出这些帖子,但使其不可浏览,您可以尝试创建一个专门针对这些帖子的类别,然后在您的列表页面上检查该类别。

SO网友:Tom J Nowell

只要你没有发布帖子,它就不会出现在任何输出中。您可以将post状态设置为“草稿”,然后继续。没有理由不在DB中使用slug。-凯撒

帖子在发布之前是不会公开的,而slug对此没有任何影响。空白段塞不会给您带来任何好处,并且可能会导致插件的兼容性问题。

你可以通过发表一篇文章并将其私有化,然后在另一台机器上访问其URL来测试你的理论。即使有弹头,柱子也不再可见。

另一件需要注意的事情是,默认情况下,主循环会拉入已发布的帖子,但如果您登录,这可能会发生变化(但仅适用于您)

结束

相关推荐

Let me choose permalinks

我需要选择一个叫做“mysite”的永久链接。com/1418”,但wordpress不断在永久链接中添加“-2”。通常这意味着我已经有了一个名为“相同”的页面,它位于垃圾箱或其他地方。但这里的情况似乎并非如此。我尝试在设置中重置永久链接,这也没有帮助。我如何使用数字作为页面名称permalink,而不用wordpress在permalink中添加“-2”。