web-dev-qa-db-ja.com

アーカイブページからカスタム投稿タイプを取得する方法

私のウェブサイトには、スクリプト、シーン、プラグインの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を作成できることを知っています。残念ながら、私が知っている限りでは、ちょっとそれを防ぐテーマをインストールしました。だからこれは選択肢ではありません。

4
pek

これを行うにはいくつかの方法があります。プット:

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 で、他のテンプレートのために異なるコードが必要になるかもしれません。

7
s_ha_dum

これがあなたが欲しい機能です:

/**
 * 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;
}
1
Nabil Kadimi
die(var_dump(get_taxonomy(get_queried_object()->taxonomy)->object_type));

それがあなたの質問に対する答えだと思います。

ハッピーコーディング!

0

テンプレート作成以外の他の素晴らしいオプションはありません!

またはそのカスタム投稿タイプアーカイブにアクセスするときにテンプレートファイルを含める(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/ /

0
revo