Heim > CMS-Tutorial > WordDrücken Sie > Leitfaden für die benutzerdefinierten Schreibpaneele von WordPress

Leitfaden für die benutzerdefinierten Schreibpaneele von WordPress

Jennifer Aniston
Freigeben: 2025-02-21 08:55:09
Original
999 Leute haben es durchsucht

WordPress 3.0 endet wesentliche Aktualisierungen, einschließlich der Integration von WordPress MU (Aktivierung von Multi-Site-Management) und der Einführung benutzerdefinierter Post-Typen. Eine besonders nützliche Funktion, die durch benutzerdefinierte Post -Typen verbessert wird, ist das benutzerdefinierte Schreibfeld.

Guide to Wordpress's Custom Write Panels

benutzerdefinierte Schreibpaneele bieten anpassbare Formularfelder (Texteingaben, Kontrollkästchen usw.) innerhalb des Post -Editors, der mit benutzerdefinierten Feldern verknüpft ist. Während das Standardpanel für benutzerdefiniertes Feld verfügbar ist, kann es für umfangreiche Dateneingabe umständlich sein. Benutzerdefinierte Schreibpaneele bieten eine optimierte, optisch ansprechende Alternative.

veranschaulichen wir mit einem "Bücher" benutzerdefinierten Beitragstyp. Über den Standardtitel und den Standardinhalt hinaus fügen wir "Autor" und "ISBN" -Felder hinzu. Fügen Sie in Ihrem Thema functions.php diesen Code hinzu, um den benutzerdefinierten Beitragstyp zu registrieren:

add_action( 'init', 'create_book_type' );
function create_book_type() {
  register_post_type( 'books', array(
    'labels' => array(
      'name' => __( 'Books' ),
      'singular_name' => __( 'Book' )
    ),
    'public' => true,
  ) );
}
Nach dem Login kopieren

Dies registriert den Post -Typ "Bücher". Fügen Sie als nächstes functions.php Folgendes hinzu, um das benutzerdefinierte Schreibfeld zu erstellen:

// Define paths (adjust as needed)
define( 'MY_WORDPRESS_FOLDER', $_SERVER['DOCUMENT_ROOT'] );
define( 'MY_THEME_FOLDER', str_replace("\",'/',dirname(__FILE__)) );
define( 'MY_THEME_PATH', '/' . substr( MY_THEME_FOLDER, stripos(MY_THEME_FOLDER,'wp-content') ) );

add_action('admin_init','book_meta_init');
function book_meta_init() {
  wp_enqueue_style( 'my_meta_css', MY_THEME_PATH . '/custom/book_panel.css' );
  add_meta_box( 'book_meta', 'Book Information', 'book_meta', 'books', 'advanced', 'high' );
}

function book_meta() {
  global $post;
  $author = get_post_meta($post->ID,'author',TRUE);
  $isbn = get_post_meta($post->ID,'isbn',TRUE);
  include(MY_THEME_FOLDER . '/custom/book_information.php');
  wp_nonce_field( __FILE__, 'my_meta_noncename' );
}

function my_meta_save($post_id) {
  if (!wp_verify_nonce( $_POST['my_meta_noncename'], __FILE__ )) return $post_id;
  if (!current_user_can('edit_post', $post_id)) return $post_id;
  $accepted_fields['books'] = array( 'author', 'isbn' );
  $post_type_id = $_POST['post_type'];
  foreach ($accepted_fields[$post_type_id] as $key) {
    $custom_field = $_POST[$key];
    if (is_null($custom_field)) delete_post_meta($post_id, $key);
    elseif (isset($custom_field) && !is_null($custom_field)) update_post_meta($post_id,$key,$custom_field);
  }
  return $post_id;
}
add_action('save_post','my_meta_save');
Nach dem Login kopieren

Erstellen Sie ein custom Verzeichnis in Ihrem Thema und add book_panel.css (zum Styling) und book_information.php (für das Panel HTML).

book_panel.css:

.book_panel .description { display: none; }
.book_panel label { display: block; font-weight: bold; margin: 6px; margin-bottom: 0; margin-top: 12px; }
.book_panel label span { display: inline; font-weight: normal; }
.book_panel span { color: #999; display: block; }
.book_panel textarea, .book_panel input[type='text'] { margin-bottom: 3px; width: 100%; }
.book_panel h4 { color: #999; font-size: 1em; margin: 15px 6px; text-transform:uppercase; }
Nach dem Login kopieren

book_information.php:

<div class="book_panel">
  <h4>Book Details</h4>
  <label for="author">Author <span>(Required)</span></label>
  <input type="text" name="author" id="author" value="<?php echo esc_attr( $author ); ?>" /><br/>
  <label for="isbn">ISBN <span>(Required)</span></label>
  <input type="text" name="isbn" id="isbn" value="<?php echo esc_attr( $isbn ); ?>" />
</div>
Nach dem Login kopieren

Verwenden Sie schließlich die benutzerdefinierten Felder in Ihrem Thema, get_post_meta() in Ihrer Schleife:

$loop = new WP_Query( array( 'post_type' => 'books', 'posts_per_page' => 10 ) );
while ($loop->have_posts()) : $loop->the_post();
  the_title();
  the_content();
  echo 'Author: ' . get_post_meta(get_the_ID(), "author", true);
  echo 'ISBN: ' . get_post_meta(get_the_ID(), "isbn", true);
endwhile;
Nach dem Login kopieren

Dies vervollständigt das Setup. Denken Sie daran, die Pfade im Code an die Struktur Ihres Themas anzupassen. Für ein ausführlicheres WordPress-Wissen finden Sie unsere Veröffentlichung "Erstellen Sie Ihre eigenen bösen WordPress-Themen."

Das obige ist der detaillierte Inhalt vonLeitfaden für die benutzerdefinierten Schreibpaneele von WordPress. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage