如何在自定义帖子类型编辑修改后显示管理通知

时间:2021-04-23 作者:Steph

我对自定义帖子类型进行了限制;vereine;。这是可行的,但管理员通知是自定义帖子已发布(而不是草稿)。如何添加消息?以下是限制的代码

function post_published_limit() {
    $max_posts = 1; // anzahl der maximalen Vereinseintragungen
    $author = $post->vereinsmanager; // nur fuer vereinsmanager limitierung

    $count = count_user_posts( $author, \'vereine\'); 

    if ( $count > $max_posts ) {
        // wenn mehr als 1, dann auf Entwurf setzen und Notiz für vereinsmanager ausgeben
        
        $post = array(\'post_status\' => \'draft\');
        wp_update_post( $post );
        
    }
}
add_action( \'publish_vereine\', \'post_published_limit\' );
谢谢你的帮助,问候

1 个回复
SO网友:Aurovrata

您需要将通知存储在数据库中,以便在重新加载页面上显示通知。有很多方法可以将通知存储在数据库中(我使用Persist Admin Notices 我的插件模板),但为了演示,我将使用一个简单的时间限制transient,

 add_action( \'publish_vereine\', \'post_published_limit\' );
 function post_published_limit() {
    $max_posts = 1; // anzahl der maximalen Vereinseintragungen
    $author = $post->vereinsmanager; // nur fuer vereinsmanager limitierung

    $count = count_user_posts( $author, \'vereine\'); 

    if ( $count > $max_posts ) {
        // wenn mehr als 1, dann auf Entwurf setzen und Notiz für vereinsmanager ausgeben
        
        $post = array(\'post_status\' => \'draft\');
        wp_update_post( $post );
        //store the transient notice to expire in 5 minutes.
        set_transient(\'vereine_post_notice\', \'You can only publish 1 post at a time\', 5 * MINUTE_IN_SECONDS);
    }
}
然后连接到管理通知流程,

add_action(\'admin_notices\', \'display_notice\');
function display_notice(){
  $notice = get_transient(\'vereine_post_notice\');
  if(!empty($notice)){
    echo \'<p>\'.$notice.\'</p>\';
  }
}