从Wordpress中的父主题更改自定义postType属性

时间:2017-06-18 09:31:45

标签: wordpress custom-post-type

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



'rewrite'	=> array(
	'slug' => 'project'
)



 我发现可以改变/添加分类法来解决自定义帖子类型,如下所示: register_taxonomy_for_object_type(' category',' CUSTOM_POST_NAME');

但改变这个(和其他)属性是否可行?

1 个答案:

答案 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的源代码是多么容易(你现在甚至可以从你的浏览器中做到:))以便弄清楚可能没有的东西永远只是一个搜索。通过一些批判性思维,你可以按照痕迹跟踪来找出调整内容的最佳方法。