it-swarm.com.de

Festlegen der Standardeinstellungen für benutzerdefinierte Felder in der Admin-Benutzeroberfläche

Ich habe meiner Wordpress 3-Installation einen anderen custom_post_types hinzugefügt. Sie unterscheiden sich alle ein wenig und sollten eindeutige Informationen in custom_fields speichern. Aber während einer einen product_id speichern kann, wird ein anderer dies nicht tun. Einer hat einen source_url und ein anderer nicht. Anstatt meine Redakteure anweisen zu müssen, welche benutzerdefinierten Felder mit welchen benutzerdefinierten Beiträgen verwendet werden sollen, kann ich festlegen, dass jeder benutzerdefinierte Beitrag seine benutzerdefinierten Felder als Teil der Benutzeroberfläche selbst enthält.

Wenn Sie "daily_cartoon" besuchen, werden Sie auf einem Bildschirm nur nach einem Titel , Titel und Medium gefragt.
Wenn Sie "daily_product" besuchen, werden Sie auf einem Bildschirm nur nach einem Titel , Preis , Zusammenfassung usw. gefragt.

7
Sampson

Hallo@ Jonathan Sampson:

Es gibtverschiedene Plugins, um benutzerdefinierte Beitragstypen zu vereinfachenund einige erlauben es Ihnen, benutzerdefinierte Felder auch in einer bestimmten Reihenfolge zu definieren:

Wie oben erwähnt, habe ich an einer gearbeitet, die keine solche Benutzeroberfläche für eine erweiterbare API für komplexe Feldtypen bietet (und auch für einfache). Nach einer Stunde habe ich jedoch festgestellt, dass sie noch nicht fertig ist zur Verteilung noch. Vielleicht in ein paar Wochen.

Diese oben aufgelisteten Plugins sollten Ihre Grundbedürfnisse im Moment erfüllen und ich werde versuchen, meine mit den von all diesen gespeicherten Daten in Zukunft kompatibel zu machen, falls Sie sich für eine zukünftige Verwendung von mir entscheiden.

Möglicherweise finden Sie in diesem Beitrag auch ein wenig Hilfe:

4
MikeSchinkel

sie können meta_boxes hinzufügen, um die benutzerdefinierten Felddaten darin zu speichern. da add_meta_box nach post_type gesetzt werden kann, können Sie verschiedenen posttypen unterschiedliche meta_boxen hinzufügen.

schauen Sie sich dieses post an, um ein vollständiges Beispiel für die Änderung des benutzerdefinierten Post-Typs new/edit scree zu erhalten.

5
hannit cohen

Ich musste kürzlich ein sehr ähnliches Problem ansprechen, während ich in einem Thema arbeitete. Die Basis des Codes war von diesem post und ich hatte einen Teil des Codes geändert

Das Folgende ist der erste Teil des Codes, den ich geändert habe.

    add_action('init', 'limited_post_type');
function my_custom_limited_post_type() 
{
  $labels = array(
    'name' => _x('Limited Post Type', 'post type general name'),
    'singular_name' => _x('Film - DVD', 'post type singular name')
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array('title','editor','author','thumbnail','excerpt', 'page-attributes','custom-fields' ),
    'show_in_nav_menus' => true
  ); 
  register_post_type('limited_post_type', $args);
}

Das Folgende ist der zweite Teil des Codes, den ich geändert habe.

foreach ( $scope as $scopeItem ) {
       switch ( $scopeItem ) {
           case "post": {
             // Output on any post screen
             if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" || $post->post_type=="post" )
             $output = true;
             break;}              
            case "page": {
                  // Output on any page screen
                  if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="page-new.php" || $post->post_type=="page" )
            $output = true;
            break;}
             case "limited_post_type": {
                                // Output on limited post_type onlye
            if ((basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" && $post->post_type=="limited_post_type" ) || (basename( $_SERVER['SCRIPT_FILENAME'] )=="post.php" && $post->post_type=="film_dvd" ))
                   $output = true;
                   break;
                  }

Wenn Sie möchten, senden Sie mir bitte eine Nachricht und ich werde Ihnen gerne meine functions.php-Datei als Referenz zusenden. Dies ist definitiv der Weg, um dies zu erreichen, da ich viele Nächte lang Haare gezogen habe.

0
jnolte