2017-03-29 2 views
0

Ich versuche, einen Shortcode für Visual Composer zu erstellen. Ich muss alle benutzerdefinierten Beitragstypen als Dropdown-Liste abrufen. Ich verwende die get_post_types() Funktion, aber es gibt ein leeres Array zurück.Wie erhalten Sie alle benutzerdefinierten Post-Typen in WordPress?

Hier ist mein Code:

/*Post type shortcode*/ 
add_action('vc_before_init', 'post_type_shortcode'); 
function post_type_shortcode(){ 
$args = array('public' => true, '_builtin' => false); 
$output = 'names'; //'names'; // names or objects, note names is the default 
$operator = 'and'; // 'and' or 'or' 
$custom_post_types = get_post_types($args, $output, $operator); 
vc_map(array(
    "name" => __("Display Post Type", "saue"), 
    "description" => "Display post type", 
    "base" => "display_post_type", 
    "class" => "", 
    "category" => __("Saue Theme", "saue"), 
    "params" => array(
     array(
      "type"   => "dropdown", 
        //"holder"  => "div", 
      "heading"  => __("Post Type", "saue"), 
      "admin_label" => true, 
      "param_name" => "post_type", 
      "value"   => $custom_post_types, 
      ), 
     ) 
    )); 

}

Ich habe auch versucht, es in der functions.php zu bekommen, aber Ergebnis ist das gleiche.

Ich habe auch add_action('init',"function_name'); verwendet, es funktioniert innerhalb des Hakens aber nicht außerhalb des Hakens.

Kann mir bitte jemand helfen?

+0

Es arbeitet mit, wenn auf der 'init' Aktion ausgeführt wird? –

+0

Es funktioniert gut. 'add_action ('init', 'getPostTypes'); Funktion getPostTypes() { $ post_types = get_post_types(); var_export ($ post_types); } 'aber wenn' return $ post_types' verwendet, gibt es nur Standard-Post-Typen zurück. –

Antwort

0

mit admin_init Haken Versuchen, die nach init läuft:

/*Post type shortcode*/ 
add_action('admin_init', 'post_type_shortcode'); 
function post_type_shortcode(){ 
$args = array('public' => true, '_builtin' => false); 
$output = 'names'; //'names'; // names or objects, note names is the default 
$operator = 'and'; // 'and' or 'or' 
$custom_post_types = get_post_types($args, $output, $operator); 
vc_map(array(
    "name" => __("Display Post Type", "saue"), 
    "description" => "Display post type", 
    "base" => "display_post_type", 
    "class" => "", 
    "category" => __("Saue Theme", "saue"), 
    "params" => array(
     array(
      "type"   => "dropdown", 
        //"holder"  => "div", 
      "heading"  => __("Post Type", "saue"), 
      "admin_label" => true, 
      "param_name" => "post_type", 
      "value"   => $custom_post_types, 
      ), 
     ) 
    )); 

} 
+0

danke @Leo es funktioniert. –

+0

Gern geschehen :) –

0

Ich habe Ihren Code um die Zeile geändert, in der Sie $ custom_post_types für Ihre Shortcode-Werte aufrufen.

/*Post type shortcode*/ 
add_action('vc_before_init', 'post_type_shortcode'); 
function post_type_shortcode(){ 
$args = array('public' => true, '_builtin' => false); 
$output = 'names'; //'names'; // names or objects, note names is the default 
$operator = 'and'; // 'and' or 'or' 
$custom_post_types = get_post_types($args, $output, $operator); 
vc_map(array(
    "name" => __("Display Post Type", "saue"), 
    "description" => "Display post type", 
    "base" => "display_post_type", 
    "class" => "", 
    "category" => __("Saue Theme", "saue"), 
    "params" => array(
     array(
      "type"   => "dropdown", 
      //"holder"  => "div", 
      "heading"  => __("Post Type", "saue"), 
      "admin_label" => true, 
      "param_name" => "post_type", 
      "value"   => $custom_post_types->name,//see this line 
      ), 
     ) 
    )); 
} 

Diese Zeile sollte die Namen der registrierten Beitragstypen zurückgeben. Hoffe, das funktioniert für dich!

+0

es feuert einen Hinweis 'Hinweis: Versuch, Eigenschaft von Nicht-Objekt in E: \ xampp \ htdocs \ ... \ functions.php' zu erhalten und die 'get_post_types' Funktion gibt nichts in diesem Hook zurück. :( –

Verwandte Themen