我想检查任何页面或帖子的帖子类型,并根据帖子类型显示一些功能。所以我在functions.php中使用了一个函数,它在管理页面中使用时返回帖子类型,但在主题页面上没有。
如果帖子类型为page
,我需要此函数来包含php文件。所以它必须在系统范围内工作(如果可能的话)。在模板,管理,编辑和发布页面。
以下是我使用的功能:
function vart_current_post_type() {
global $post, $typenow, $current_screen;
if ( $post && $post->post_type ) {
return $post->post_type;
}
elseif ( isset( $_GET[ 'post' ] ) ) {
return get_post_type( $_GET[ 'post' ] );
}
elseif ( $typenow ) {
return $typenow;
}
elseif ( $current_screen && $current_screen->post_type ) {
return $current_screen->post_type;
}
elseif ( isset( $_REQUEST[ 'post_type' ] ) ) {
return sanitize_key( $_REQUEST[ 'post_type' ] );
}
return null;
}
add_action( 'init', 'vart_current_post_type' );
请告诉我,为了使其适用于主题模板和页面,我该怎么办?
感谢。
答案 0 :(得分:1)
有一种本地方法可以找出当前的帖子类型:https://developer.wordpress.org/reference/functions/get_post_type/
$post_type = get_post_type();
答案 1 :(得分:0)
在init
钩上,$post
对象尚未填充。
有关WP挂钩(操作)执行的信息,请参见this。如您所见,帖子在init之后很晚才被选中。更准确地说,即使请求是在初始化钩子之后进行解析的。因此,恐怕没有简单的方法可以在初始化操作中获取帖子类型。
通过wp
钩子,您可以使用函数获取帖子类型。