我正在为一个令人兴奋的Wordpress主题构建一个childtheme。 父主题创建一个自定义帖子类型,其具有属性"重写"我想摆脱的财产。
'rewrite' => array(
'slug' => 'project'
)

但改变这个(和其他)属性是否可行?
答案 0 :(得分:1)
这里的关键是对register_post_type
的调用。这是在WordPress中实际注册帖子类型的内容。
在docs中,我们看到该函数在/wp-includes/post.php
中定义。我们还可以看到该函数的完整源代码,非常方便。
在该函数的源代码中,我们可以看到只有一个do_action()
,并且在帖子类型完全注册后调用了它。
所以,下一个要看的地方是WP_Post_Type
班。我们可以再次扩展完整的源代码(或者您可以在您喜欢的文本/代码编辑器中查看源代码)。首先要看的是该类的__construct()
方法。目前(WordPress 4.8)包含以下内容:
public function __construct( $post_type, $args = array() ) {
$this->name = $post_type;
$this->set_props( $args );
}
因此,正如您所看到的,名称已分配给$this->name
,然后使用传递的set_props()
调用方法$args
(这是发送到{{的参数数组) 1}}。
要查看的下一个合理位置是register_post_type()
方法。而在该方法的最顶层是以下代码:
set_props()
宾果!传递的 /**
* Filters the arguments for registering a post type.
*
* @since 4.4.0
*
* @param array $args Array of arguments for registering a post type.
* @param string $post_type Post type key.
*/
$args = apply_filters( 'register_post_type_args', $args, $this->name );
会在初始化帖子类型之前通过$args
过滤器传递。
现在,拼图的最后一部分是创建自己的功能,将其附加到register_post_type_args
过滤器,确保您正在更改正确的帖子类型,并且您可以自由地使用使用该帖子类型做任何你想做的事情。以下是帮助您解决问题的示例代码:
register_post_type_args
我希望这会帮助你和那里的任何人看到深入了解WordPress的源代码是多么容易(你现在甚至可以从你的浏览器中做到:))以便弄清楚可能没有的东西永远只是一个搜索。通过一些批判性思维,你可以按照痕迹跟踪来找出调整内容的最佳方法。