我在wordpress平台上创建了一个网站,我想在那里发布我自己的书籍文本。所以我想要的是有某种层次结构,我会添加一个职位,然后添加儿童到它(章节)。我发现这一点:
register_post_type( 'post', array(
'labels' => array(
'name_admin_bar' => _x( 'Post', 'add new on admin bar' ),
),
'public' => true,
'_builtin' => true, /* internal use only. don't use this when registering your own post type. */
'_edit_link' => 'post.php?post=%d', /* internal use only. don't use this when registering your own post type. */
'capability_type' => 'post',
'map_meta_cap' => true,
'hierarchical' => false,
'rewrite' => false,
'query_var' => false,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
) );
并试图制作'hierarchical"=>true
,但没有效果,有人能帮忙吗?
9条答案
按热度按时间eqoofvh91#
这是我的解决方法。这完全达到了你想要的,能够为内置的post类型post设置post的父对象。你可以通过在
registred_post_type
action hook中添加一个action来实现这一点。只要把它添加到你的主题的functions.php中就行了。有很多原因可以解释为什么将帖子层次化是有帮助的。我的用例是客户希望将他们的(已经存在的)帖子结构化为问题,其中子帖子是一个问题(父帖子)的文章。
通过使用将查询限制为仅显示没有父项的帖子,可以轻松实现这一点。
在查询$args中。
shyt4zoc2#
工作方案4.9.*
上述解决方案使友好URL变得疯狂。
我的解决方案添加层次结构到任何现有的职位类型:
重新保存wp设置到/wp-admin/options-permalink. php
daupos2t3#
更新
由于一些评论引发了新的用例和问题,我重写了这段代码,并在我自己的网站上使用它[在5.8.2中测试]。我已经提供了它的要点。你可以把它包含在你的functions.php中,或者把它做成一个插件。
https://gist.github.com/amurrell/00d29a86fc1a773274bf049ef545b29f
🎉 这个新的更新是利用SQL(快速!)来解析slug和post id,以确定永久链接和路由。它产生完全匹配的post id,即使您使用相同的
post_name
为不同的post后代。它真的是快速和可靠!在本文中,最有趣的函数是
get_post_from_uri($uri)
👇 让我们看看查询是如何工作的,这可能不是一个完美的1 - 1代码,因为我把它动态化了,但是概念是存在的:
示例:
我有以下职位:
在SQL中查看:
示例URL:
alliance-for-innovation/climate
完整查询...
我现在有两个职位
ID
* 和 * 的slug
,或永久链接,我应该使用!值得注意的是,我转到了p3层,这比URL所需的多一层(两部分),这是为了防止类似
alliance-for-innovation/climate/something
的内容匹配。它是如何工作的?分解查询
有一个内部查询查找URL的最后一部分,即basename,在本例中为
climate
。在编程上,我们不断地在直接与url中
/
的数目相关的查询周围添加抽象,这样我们就可以找到关于post_parent的slug的更多信息。在我们进行了足够多次的抽象之后,我们可以 * 选择concats作为slug *,例如:p1_嵌段+'/'+ p2_嵌段
最后一步是为原始url添加一个
where
:alliance-for-innovation/climate
。这就是我们在第一个完整查询示例中看到的内容!让我们看看其他人的表现:
我喜欢此更新的另一点是我记得:
转义
climate
,即我们在查询中使用的URL的基本名称,因为从技术上讲,这是用户输入的(通过url)那么这个查询构建函数是如何动态的呢?
我们使用PHP数组、循环等来 * 构建一个将成为查询的字符串 *,这样我们就不必使用PHP来处理数据本身的逻辑。
这是一个显示动态抽象的片段-例如,要抓取多少个p1_slug、p2_slug、p3_slug。
上一个答案:
我来这里是为了实现:
1.向post_type帖子添加页面属性以添加父帖子
1.能够为post_type帖子添加页面模板
1.能够在post_type帖子上获得分层固定链接结构
我能够使用the accepted answer完成1和2,但不能完成3。
对于3,我发现了一个插件,破坏了我的post_type页面,它是很多相当糟糕的,未经维护的代码。
所以我借用this answer编写了一个解决方案来完成这一切:
(用4.9.8测试)
您可以将其保存到
custom-posts-hierarchy.php
文件中,并将其包含在主题的functions.php文件中,或者您可以在顶部添加:然后把它放到你的插件文件夹里。祝你好运!
2hh7jdfx4#
WordPress中的 * 帖子 * 应该是典型的按时间顺序排列的博客帖子。* 页面 * 是为静态内容制作的,它们可以按层次结构组织。
对于任何页面,您都可以选择父页面。这样,您就可以创建具有多个子页面的嵌套层次结构。听起来正是您所需要的。
查看WordPress文档了解详情。
如果你有一个很深很复杂的树结构,一个插件可以帮助你管理它,比如Wordpress Page Tree,它提供了一个比默认的WordPress页面列表更好的界面。
yduiuuwa5#
使用像
CPT UI
这样的插件,你可以创建一个自定义的帖子类型,并将其设置为具有层次树。然后检查一下帖子类型
page-attribute
是否设置为这个自定义的帖子类型和voile,你的帖子现在有了层次结构。https://wordpress.org/plugins/custom-post-type-ui/
fxnxkyjh6#
最好的解决方案是创建自定义分类[1]:http://codex.wordpress.org/Function_Reference/register_taxonomy并创建主鼻涕虫-书籍或其他东西。
vybvopom7#
存在为
post
创建层次结构的插件:amrnrhlw8#
这样不是更好吗
我补充说:
“分层”=〉真,
而且很有效。
tf7tbtn29#
我也在考虑给帖子增加层次结构,我通读了这个主题。我的结论是(在我看来)最好避免在帖子中添加层次结构,帖子和页面层次结构是WordPress的这样一个核心概念,以及SEO和与插件兼容性的各种问题(和WordPress核心)可以在触摸这个的时候出现,而不是实现一个复杂的技术解决方案,如果希望它能与未来的WordPress和插件更新保持兼容,那么使用类别和子类别来划分帖子层次结构似乎更好,如果这不能提供足够的灵活性,使用页面而不是帖子,因为页面也支持开箱即用的层次结构(如前面提到的)。
可能有些情况下,看起来像文章类别或页面都不能解决你的层次结构问题,但我仍然认为,你应该考虑是否要通过实现某种形式的自定义文章层次结构解决方案来为自己复杂化的事情,以及所有未来的问题,可能来自它。
虽然为一个问题提出一个技术解决方案是很诱人的,但有时最好的答案是根本不做什么,而是完全使用不同的方法。