2016-11-25 6 views
0

に、私は彼らのポストを作成したユーザーのためpost_typeを適用する問題は、理論的には私はワードプレスのこれらの機能を発見したが、どうやらそれはは、関数のワードプレス

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'); 
を動作しませんis_author(GET_CURRENT_USER_IDを())動作していません

または関数がfunctions.phpからの呼び出しに有効でない可能性があります

+0

私が間違っていない場合は、作成者ページが表示されているときにパラメータなしのis_author()を実行してください。パラメータを持つis_author()は、著者のアーカイブページが表示されているかどうかをチェックするだけです。 – Benoti

+0

私はあなたに非常に似た問題を抱えています。 get_current_user_id()を削除すると、すべての著者ページで完全に機能しますが、現在ログインしている著者のページでのみ機能します。また、私はあなたがこれを動作させるために "return $ query"を使う必要はないと思っています。 – mikey242

答えて

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'); 
関連する問題