Erstellen von On-Page-Optionen für den benutzerdefinierten Post-Typ

Ich erstelle ein Plugin zum Erstellen von Zielseiten.

Ich verwende benutzerdefinierte Post-Typ und benutzerdefinierte Felder für die Zielseiten, aber ich muss einige On-Page-Optionen für jeden Eintrag hinzufügen. Zum Beispiel muss ich eine Option (Kontrollkästchen) haben, um die Kopfzeile (die Kopfzeile wird über ein benutzerdefiniertes WYSIWYG-Feld bearbeitet) auf einer bestimmten Zielseite auszublenden.

Ich suchte nach verschiedenen Optionen “Frameworks” und ich fand Redux ( https://github.com/ghost1227/Redux-Framework ), die für Plugins funktioniert und auch WordPress Settings API verwendet.

Die Beispiele von Redux und jedem anderen Framework, das ich gefunden habe, sowie alle Tutorials, die ich online über das Erstellen von Einstellungen / Optionen-Seiten gefunden habe, sind für allgemeine Optionen, aber ich muss diese Optionen im Bearbeitungsbildschirm meines spezifischen benutzerdefinierten Post-Typs haben.

Ich bin kein PHP-Guru, aber ich versuche und willens zu lernen, jede Hilfe wird geschätzt werden oder zumindest wenn jemand mich in die richtige Richtung zeigen könnte, wäre es nett.

Prost, Stelios

Solutions Collecting From Web of "Erstellen von On-Page-Optionen für den benutzerdefinierten Post-Typ"

Was Sie wollen, ist eine benutzerdefinierte Meta-Box .

Die Suche auf dieser Seite wird Ihnen auch viele Beispiele geben, aber hier ist ein kurzer Überblick.

Sie haken in add_meta_boxes und rufen entsprechend add_meta_box .

 < ?php add_action('add_meta_boxes', 'wpse87567_add_box'); function wpse87567_add_box($post_type) { // $post_type the "page" on which the `add_meta_boxes` action is being fired // It could be commends or could be a post type. It's really only // useful if you want to dynamically add a meta box everywhere. add_meta_box( 'wpse87567-box', // the meta box ID, can be anything __('A Meta Box', 'wpse'), // your meta box title 'wpse87567_box_callback', // the callback, the function that spits our your meta box contents (eg. fields) 'landing_page', // the post type to which you wish to add the meta box 'side', // where should you put it? side, normal, or advanced 'low' // how important is it? high, core, default, or low ); } function wpse87567_box_callback($post) { // post is the current page's post object, use it to fetch your additional // meta data via `get_post_meta` or the like. // spit out your HTML fields here } 

Um Dinge zu speichern, haken Sie sich in save_post und überprüfen Sie, ob Sie nicht automatisch speichern, die Post-Typen übereinstimmen, die Nonces auschecken und der aktuelle Benutzer den Post tatsächlich bearbeiten kann

 < ?php add_action('save_post', 'wpse87567_save', 10, 2); function wpse87567_save($post_id, $post) { // make sure we aren't doing an autosave if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } // check if your post types match: do you need to save... if ('landing_page' !== $post->post_type) { return; } // If you used a nonce above, and you should have, check it here. // See if the current user can edit the post // `edit_post` should be whatever capability your post type was // registered with. Maybe be `edit_page` or `edit_landing_page`, etc if (!current_user_can('edit_post', $post_id)) { return; } // if you're here, save stuff. if (!empty($_POST['some_field_from_the_callback'])) { update_post_meta( $post_id, '_your_meta_key', esc_attr(strip_tags($_POST['some_field_from_the_callback'])) ); } else { delete_post_meta($post_id, '_your_meta_key'); } } 

Sie suchen nach Meta-Boxen.

Der Codex hat viele tolle Informationen über Meta-Boxen . Schauen Sie sich die Beispiele auf dieser Seite an und passen Sie sie an Ihre Bedürfnisse an.

Es gibt viele Plugins, die ähnliche functionen bieten. Ich habe die WP Alchemy Class mit viel Erfolg benutzt; es ist sehr entwicklerorientiert und nicht für schwache Nerven. Ich habe mich auch ein wenig mit dem Advanced Custom Fields- Plugin beschäftigt, das einfacher zu benutzen ist, aber nicht immer genau das tut, was Sie brauchen.

Redux hat auch eine Metabox-Erweiterung, die Ihr Panel und Metaboxen miteinander verbindet. 😉 http://reduxframework.com/extensions/