我有问题为已创建帖子的用户应用post_type,理论上我发现了wordpress的那些功能,但显然它不起作用
function preview_publish_posts($query) {
if( is_user_logged_in() && is_author(get_current_user_id()) ) {
$query->set('post_status', array('publish', 'pending'));
}
return $query;
}
add_filter('pre_get_posts', 'preview_publish_posts');
或者该功能可能无法从functions.php
中调用它答案 0 :(得分:0)
经过大量的游戏,我发现无论我如何尝试,is_author(get_current_user_id())永远不会返回true。我检查是否是get_current_user_ID的错误,但这将返回正确的值。我最终使用了一种稍微不同的方法来达到预期的效果。
下面的代码为我解决了问题,但我仍然想知道为什么is_author(get_current_user_id())在这种情况下不起作用。
function preview_publish_posts($query) {
$curauth = (get_query_var('author_name')) ? get_user_by('slug', get_query_var('author_name')) : get_userdata(get_query_var('author'));
if ( !is_admin() && $query->is_main_query() && is_author() ){
if( is_user_logged_in() && $curauth->ID == get_current_user_id() ) {
$query->set( 'post_status', array('publish', 'pending'));
}
return;
}
}
add_action( 'pre_get_posts', 'preview_publish_posts' );