web-dev-qa-db-ja.com

プライベートカスタム投稿タイプを照会

私のカスタム投稿タイプはfalseとして 'public'に登録されており、WP_Query()オブジェクトを使って問い合わせています。 argの 'post_type'もprivateに設定されています。 URLはsite.com/?post_type=my_post_typeです。

登録時に 'exclude_from_search'属性をfalseに設定しようとしましたが、それでも投稿が返されませんでした。ドキュメントから、それは上記のURLクエリが影響を受けるだろうようです。私のページはテーマフォルダの中のsingle-my_custom_post_type.phpです。

フロントエンド検索やパブリッククエリ可能属性の影響を受けないURLを持つには、カスタムページテンプレートを使用してページを作成する必要があると思います。

問題は、デフォルトのurl?post_type = ...を維持し、それでもプライベート投稿タイプを照会することができるかどうかということです。ありがとう。

答え: これが私が使った属性です。

'public'        => false,
'publicly_queryable' => true,
'exclude_from_search' => true,

デフォルトのURLをpost_typeクエリパラメータで保持したいので、 publicly_queryable 属性はtrueである必要があります。他の人に見せないためには、現在のユーザーにそのページを見せるかどうかをチェックするための条件付けをしなければなりません。

1
TurtleTread

CPTを非公開に設定している場合、それはwordpressにその投稿タイプの動的ページを作成しないように指示しています。これにはsingle-CPT.phpファイルの使用も含まれます。

"?post_type ="ページを作成する場合は、cptをpublicly_queryable = true、またはpublic = true(publicly_queryableを含む)に設定する必要があります。

なぜあなたはそれを非公開にしたいのですか(public = false)。

あなたがちょうど後ろのポストを持っていることを探しているならば、これをしてください:

publicly_queryable=false;  //disables creation of single pages.
has_archive=false;  //disables creation of archive page.
public=true;  //if this is set to false it will hide them in the backed too.

このようにしてフロントエンドに投稿を表示したい場合は、wp_queryを使用して投稿を利用できます。私は、人々が私のCPTの単一のバージョンを見ることができないようにしたくない場合、または私がすべての私の投稿を同時に引っ張るつもりがない場合に、このような場合をします。彼らはグーグルや他のインデックス作成機に拾われないので、これも素晴らしいです。

1
rudtek