私のウェブサイトには、スクリプト、シーン、プラグインの3つのカスタム投稿タイプがあります。単一の投稿タイプのアーカイブページにアクセスすると(つまり、mysite.com/pluginsにアクセスして)、そのタイプのすべての投稿が正しく表示されます。
archive.phpで、ユーザーが現在見ているカスタム投稿の種類を確認するにはどうすればよいですか。
私は以下を試しました:
<?php
global $post;
$postTypeLabels = get_post_type_labels(get_post_type_object($post));
echo var_export($postTypeLabels);
?>
しかし、私はこれを得ています:
Post name is stdClass::__set_state(
array( 'name' => 'Posts',
'singular_name' => 'Post',
'add_new' => 'Add New',
'add_new_item' => 'Add New Post',
'edit_item' => 'Edit Post',
'new_item' => 'New Post',
'view_item' => 'View Post',
'search_items' => 'Search Posts',
'not_found' => 'No posts found.',
'not_found_in_trash' => 'No posts found in Trash.',
'parent_item_colon' => NULL,
'all_items' => 'All Posts',
'menu_name' => 'Posts',
'name_admin_bar' => NULL,
)
)
私はアーカイブページにいるので、$ postは正しくないと思います。
P.S私は私がプラグインアーカイブ用にarchive-plugins.phpを作成できることを知っています。残念ながら、私が知っている限りでは、ちょっとそれを防ぐテーマをインストールしました。だからこれは選択肢ではありません。
これを行うにはいくつかの方法があります。プット:
var_dump($wp_query->query,get_queried_object()); die;
あなたのarchive.php
で、あなたはそれらの2つの方法を見るべきです。
$wp_query->query
はカスタム投稿タイプのためのpost_type
コンポーネントを持ちます。 post
投稿タイプにはありません。 get_queried_object
はカスタム投稿タイプではかなりの量のデータを返しますが、post
投稿タイプではnullを返します。
いくつかの 関連テンプレートタグ も役に立つかもしれません。 is_post_type_archive
が頭に浮かぶ。
それらの間には、必要なロジックをまとめるために必要な情報があるはずです。最終結果がどうなるべきかがあなたからはっきりしないので、私はあまり書くことができません。
あなたが特にarchive.php
と名付けたので、それが私がテストしたものです。特に get_queried_object
で、他のテンプレートのために異なるコードが必要になるかもしれません。
これがあなたが欲しい機能です:
/**
* Get the current archive post type name (e.g: post, page, product).
*
* @return String|Boolean The archive post type name or false if not in an archive page.
*/
function get_archive_post_type() {
return is_archive() ? get_queried_object()->name : false;
}
die(var_dump(get_taxonomy(get_queried_object()->taxonomy)->object_type));
それがあなたの質問に対する答えだと思います。
ハッピーコーディング!
テンプレート作成以外の他の素晴らしいオプションはありません!
またはそのカスタム投稿タイプアーカイブにアクセスするときにテンプレートファイルを含める(URLによる)。
詳細については他のリンクを参照してください。
http://codex.wordpress.org/Function_Reference/load_template
wordpress - URIに基づいてテンプレートをロードする
http://www.mihaivalentin.com/wordpress-tutorial-load-the-template-you-want-with-template_redirect/ /