2016-07-19 20 views
0

Ich werde von meinem Kunden aufgefordert, ein benutzerdefiniertes Feld hinzuzufügen, das in einer URL eingegeben werden kann. Die Post selbst ist eine benutzerdefinierte Plugin benutzerdefinierte Post-Typ, dies ist der Code ich für diesen Teil haben:So fügen Sie einem WordPress-Plugin benutzerdefinierte Felder hinzu

register_post_type('storylist', 
    array(
     'labels' => $labels, 
     'public' => false, 
     'exclude_from_search' => true, 
     'publicly_queryable' => false, 
     'show_ui' => true, 
     'supports' => array('title'), 
    ) 
); 
    add_filter('rwmb_meta_boxes', 'c_register_meta_boxes'); 

} 

function c_register_meta_boxes($boxes){ 
    $prefix = 'c_rwmb_'; 
    $boxes[] = array(
    'id' => 'view', 
    'title' => __('View Link', 'c_rwmb'), 
    'post_types' => array('storylist'), 
    'context' => 'normal', 
    'priority' => 'high', 
    'fields' => array(
     array(
      'name' => __('View URL', 'c_rwmb'), 
      'id' => $prefix . 'view_url', 
      'type' => 'text', 
      'size' => 60, 
      'clone' => false 
     ), 
    ) 

); 

    return $meta_boxes; 
} 

Nun das Problem ist, wenn ich auf die Post gehen, sehe ich nicht die benutzerdefinierten Meta-Feld selbst zeigt sich Gibt es etwas, das mir fehlt?

+0

Dumme Frage, aber nur um sicher zu sein - Sie haben das [Meta-Box-Plugin] (https://wordpress.org/plugins/meta-box/) installiert, oder? Ich bin mir ziemlich sicher, dass die 'rwmb_meta_boxes' spezifisch dafür sind. – Hobo

+2

Und mit Blick auf den Code, sollten Sie '$ Boxen', nicht' $ meta_boxes' zurückgeben – Hobo

+0

@Hobo du bist richtig dumm mich. Vielen Dank. – MikeL5799

Antwort

0

Der benutzerdefinierte Beitragstyp ("Storylist") kommt vom Plugin richtig? Dann müssen Sie den benutzerdefinierten Beitrag nicht erneut registrieren. Sie müssen nur ein Meta-Feld für diesen Post-Typ hinzufügen und den Wert speichern, während Sie den Post aktualisieren. Sobald ich eine Erfahrung hatte, um Randleiste mit benutzerdefiniertem Feld zu aktivieren/deaktivieren. Ich habe meinen Code geteilt. Hoffe das wird dir helfen.

<?php 
add_action('admin_init','add_metabox_post_sidebar'); 
add_action('save_post','save_metabox_post_sidebar'); 
/* 
* Funtion to add a meta box to enable/disable the posts. 
*/ 
function add_metabox_post_sidebar() 
{ 
    add_meta_box("Enable Sidebar", "Enable Sidebar", "enable_sidebar_posts", "post", "side", "high"); 
} 

function enable_sidebar_posts(){ 
    global $post; 
    $check=get_post_custom($post->ID); 
    $checked_value = isset($check['post_sidebar']) ? esc_attr($check['post_sidebar'][0]) : 'no'; 
    ?> 

    <label for="post_sidebar">Enable Sidebar:</label> 
    <input type="checkbox" name="post_sidebar" id="post_sidebar" <?php if($checked_value=="yes"){echo "checked=checked"; } ?> > 
    <p><em>(Check to enable sidebar.)</em></p> 
    <?php 
} 

/* 
* Save the Enable/Disable sidebar meta box value 
*/ 
function save_metabox_post_sidebar($post_id) 
{ 
    // Bail if we're doing an auto save 
    if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; 

    // if our current user can't edit this post, bail 
    if(!current_user_can('edit_post')) return; 

    $checked_value = isset($_POST['post_sidebar']) ? 'yes' : 'no'; 
    update_post_meta($post_id, 'post_sidebar', $checked_value); 


} 

?> 

Hier habe ich ein benutzerdefiniertes Feld ‚post_sidebar‘ für die Zeit nach Art „post“ können Sie Ihre eigenen ändern und ändern Sie Ihre Posttyp in dieser Zeile add_meta_box("Enable Sidebar", "Enable Sidebar", "enable_sidebar_posts", "post", "side", "high"); von „post“ auf „storylist“ genannt worden.

+0

Danke @Palanivelrajan. Ich denke, das wird helfen, ich muss es nur so ändern, dass es nur ein Textfeld und keine Checkbox ist. – MikeL5799

Verwandte Themen