2017-02-17 13 views
2

プラグインを作成しようとしていますが、私はカスタム投稿とタクソノミが必要です。しかし、管理者側でアクセスできる可能性がありますが、タクソノミーはフロントエンドでは機能していません。カスタムプラグインでタクソノミーを設定するにはどうすればいいですか?

function post_type_questionnaire() 
{ 
    $labels = array(
     'name' => _x('Questionnaire', 'post type general name'), 
     'singular_name' => _x('Questionnaire', 'post type singular name'), 
     'add_new' => _x('Add New Question', 'questionnaire'), 
     'add_new_item' => __('Add New Questionnaire') 
    ); 

    $args = array(
     'labels' => $labels, 
    'public' => true, 
    'publicly_queryable' => true, 
    'show_ui' => true, 
    'query_var' => true, 
    'rewrite' => true, 
     '_builtin' => false, // It's a custom post type, not built in! 
    'capability_type' => 'post', 
    'hierarchical' => false, 
    'menu_position' => null, 
     'supports' => array('title', 
          //'editor', 
          /*'excerpt', 
          'thumbnail', 
          'trackbacks', 
          'custom-fields', 
          'comments', 
          'revisions', 
          'author', 
          'page-attributes'*/ 
    )); 

    register_post_type('questionnaire',$args); 

} 
add_action('init', 'post_type_questionnaire'); 



function create_questionnaire_taxanomies(){ 
    register_taxonomy('qcategories','questionnaire', array(
     'hierarchical'=>true, 
     'label'=>'Questionnaire Categories', 
     'rewrite' => array('slug' => 'questionnaire') 
    )); 
} 

add_action('init', 'create_questionnaire_taxanomies',0); 

私はフロントエンドでそれを表示するには、ショートコードを使用しています:

これは私がカスタムポストと分類を登録する方法です。その下のコードを使用して

は、すべての記事

$args = array(
    'post_type' => 'questionnaire', 
    'posts_per_page' => -1, 
); 
$query = new WP_Query($args); 
if ($query->have_posts()) { ?> 
<?php while ($query->have_posts()) :query->the_post(); ?> 

を示ししかし、私はそれが動作しない分類用語を指定しようと、これはコードのとき:

$args = array(
    'post_type' => 'questionnaire', 
    'posts_per_page' => -1, 
    'tax_query' => array(
     array(
      'taxonomy' => 'qcategories', 
      'field' => 'slug', 
      'terms'  => $atts["name"] 
     ) 
    ) 
); 
$query = new WP_Query($args); 
if ($query->have_posts()) { ?> 
<?php while ($query->have_posts()) : $query->the_post(); ?> 

私が試しましたテンプレートページに投稿数を表示するには、何も表示されません。

$term = get_term(3, 'qcategories'); 
echo $term->count; 

これは何も出力しませんoタクソノミーが登録されていないと考えています。私のカスタムプラグインにタクソノミを登録する手助けができます。前もって感謝します!

編集

これは、$ argsをの出力です:OPはプラグインのコードIEのほんの少しの見落としがあった発見したように、コードは、ちょうど良かったよう

array (size=3) 
    'post_type' => string 'questionnaire' (length=13) 
    'posts_per_page' => int -1 
    'tax_query' => 
    array (size=1) 
     0 => 
     array (size=3) 
      'taxonomy' => string 'qcategories' (length=11) 
      'field' => string 'slug' (length=4) 
      'terms' => string 'new' (length=3) 
+0

バックエンドに分類が表示されていますか? –

+0

@PiyushDhanotiyaはい、それはバックエンドに表示されます – shellysaju

+0

あなたのカスタムタクソノミーの名前は何ですか?カスタム分類を登録したコードはどこですか? –

答えて

2

が見えましたタクソノミを登録する前に、WordPressテンプレートタグif(is_admin())があったため、管理パネルでコードがうまく動作しましたが、フロントエンドで呼び出されたときにはWP_QUERY

0タクソノミーはありませんでした

条件が満たされている場合、そのadmin_onlyを削除すると、コードはうまく動作します。

+0

はい、それはタイプミスでした。ありがとう – shellysaju

関連する問題