Neugestaltung der Seite "Benutzerdefiniert" vom Typ "Neu hinzufügen"

8

Ich habe überall in Google nach einer Lösung dafür gesucht. Ich schreibe ein benutzerdefiniertes Post-Typ-Plugin für die Arbeit, um Besucher anzumelden, die wir erhalten. Ich habe zunächst ein Modell ohne benutzerdefinierte Beitragstypen geschrieben, bin dann von einer Google-Suche hierher gekommen und habe einen Screenshot gesehen, der ein Beispiel für benutzerdefinierte Beitragstypen zum Speichern von Informationen über Anwälte zeigt. Es zeigte sich, dass jemand die Seite "Neu hinzufügen" / "Bearbeiten" für benutzerdefinierte Beitragstypen mit einer völlig neuen Oberfläche neu gestaltet hat.

Ich habe mich gefragt, ob WordPress @ Stackexchange über Ressourcen verfügt, um die benutzerdefinierten Beitragstypen "Seiten hinzufügen / bearbeiten" neu zu gestalten.

Ich kann mich jedoch nicht an die Suchbegriffe erinnern, mit denen ich diesen Artikel gefunden habe.

Danke,
-Zack

Zack
quelle

Antworten:

11

Die Frage / Antwort, auf die Sie sich beziehen, war Tipps zur Verwendung von WordPress als CMS .

Die Screenshots in dieser Antwort geschrieben wurden mit dem erstellten register_meta_box_cbArgumente, die für benutzerdefinierte Post - Typen zur Verfügung.

register_meta_box_cb muss eine Rückruffunktion angeben, die den Code für die Meta-Box enthält.

Um die Meta-Box zu erstellen, können Sie die in WordPress integrierte Funktion add_meta_box verwenden, für die auch eine Funktion zum Speichern der eingegebenen Daten beim Speichern des Beitrags erforderlich ist.

Hier ist ein Beispielcode, den ich erstellt habe, um meinem Portfolio-Beitragstyp, den ich auf meiner persönlichen Website verwende, zwei benutzerdefinierte Meta-Boxen hinzuzufügen.

Der von mir erstellte Beitragstyp "Projekte" enthielt dieses Argument:

'register_meta_box_cb' => 'c3m_project_meta',

Die erste Funktion unten ist die Rückruffunktion für register_meta_box_cb. Die folgenden 2 geben den HTML-Code für die Meta-Boxen auf der Seite zum Hinzufügen von Posts aus und die letzten 2 speichern die eingegebenen Daten.

function c3m_project_meta() {
        add_meta_box('_c3m_project_url', __('Enter Website Url') , 'c3m_project_url', 'project', 'side', 'low');
        add_meta_box('_c3m_project_work', __('Enter Work Done on Project') , 'c3m_project_work', 'project', 'side', 'low');

        }


    function c3m_project_url($post) {
        global $post;
        echo  '<input type="hidden" name="banner-buttonmeta_noncename" id="banner-buttonmeta_noncename" value="' .
        wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
        $projecturl = get_post_meta($post->ID, '_projecturl', true);
        echo '<input type="text" name="_projecturl" value="' . $projecturl . '" class="widefat" />' ; 
        }

    function c3m_project_work($post) {
        global $post;
        echo  '<input type="hidden" name="banner-buttonmeta_noncename" id="banner-buttonmeta_noncename" value="' .
        wp_create_nonce( plugin_basename(__FILE__) ) . '" />';
        $projectwork = get_post_meta($post->ID, '_projectwork', true);
        echo '<input type="text" name="_projectwork" value="' . $projectwork . '" class="widefat" />' ; 
        }


    add_action('admin_init', 'c3m_project_meta');



    function c3m_save_project_meta( $post_id , $post ) { 

        if ( !wp_verify_nonce( $_POST [ 'banner-buttonmeta_noncename' ], plugin_basename( __FILE__ ) )) { return $post ->ID; 

        }

        if ( !current_user_can( 'edit_post' , $post ->ID )) return $post ->ID; 
        $c3m_projecturl [ '_projecturl' ] = $_POST [ '_projecturl' ]; 
                    foreach ( $c3m_projecturl as $key => $value ) { 
                    if ( $post ->post_type == 'revision' ) return ; 

                    $value = implode( ',' , ( array ) $value );
                    if (get_post_meta( $post ->ID, $key , FALSE)) { 
                    update_post_meta( $post ->ID, $key , $value ); } else { 
                    add_post_meta( $post ->ID, $key , $value ); } if (! $value ) delete_post_meta( $post ->ID, $key ); 

                    }

        $c3m_projectwork [ '_projectwork' ] = $_POST [ '_projectwork' ]; 
                    foreach ( $c3m_projectwork as $key => $value ) { 
                    if ( $post ->post_type == 'revision' ) return ; 

                    $value = implode( ',' , ( array ) $value );
                    if (get_post_meta( $post ->ID, $key , FALSE)) { 
                    update_post_meta( $post ->ID, $key , $value ); } else { 
                    add_post_meta( $post ->ID, $key , $value ); } if (! $value ) delete_post_meta( $post ->ID, $key ); 

                    }
        }

   add_action( 'save_post' , 'c3m_save_project_meta' , 1, 2); 
Chris_O
quelle
Aha, ok, es war nur eine Meta-Box, die ich gesehen habe. Ich dachte, es wäre eine Art "Hack" für WordPress, lol. Vielen Dank!
Zack
4

Als ich mich mit der gleichen Sache befasste, fand ich diesen Artikel ziemlich interessant:

So erstellen Sie eine benutzerdefinierte WordPress-Meta-Box, anstatt benutzerdefinierte WordPress-Felder zu verwenden

Wenn Sie lernen, wie Sie benutzerdefinierte WordPress-Meta-Boxen erstellen, können Sie professionelle UI-Elemente für sich und Ihre Kunden erstellen. Dieses WordPress-Meta-Box-Tutorial zeigt Ihnen, wie Sie den Bearbeitungsbeitrags- / Seitenbildschirmen Elemente der Administrator-Benutzeroberfläche hinzufügen.

Chris hat Recht mit dem Geld, obwohl eine zusätzliche Ressource nicht schadet :)

Noel Tock
quelle