it-swarm.com.de

Hinzufügen einer benutzerdefinierten Option zum Metafeld "Standardseitenattribute"

Ich möchte eine einfache Kontrollkästchenoption zum vorhandenen Meta-Feld für Standardseitenattribute hinzufügen.

Gibt es eine offensichtliche/beabsichtigte Möglichkeit, dies mithilfe der WordPress-API zu tun, anstatt eine neue Metabox für meine eine neue Option zu registrieren?

3
mikkelbreum

Leider nicht. Die einzige Möglichkeit besteht darin, die Registrierung der Metabox rückgängig zu machen und sie dann erneut zu registrieren. Dabei wird Ihre eigene Rückruffunktion bereitgestellt, die die ursprüngliche Metabox imitiert, jedoch mit Ihren Änderungen (wobei sichergestellt wird, dass sich die Namen der Eingänge nicht ändern).

Diese Methode wird in den folgenden Beiträgen beschrieben:

Alternativ können Sie die Optionen mit Javascript wie folgt einfügen:

4
Stephen Harris

Stephen Harris wies sanft darauf hin, dass ich die Frage falsch verstanden habe. Leider gibt es keine Aktion post_submitbox_publish_actions, in die wir einbinden können.

Damit meine Lösung funktioniert, müssen Sie jQuery veranlassen, das Kontrollkästchen von seiner ursprünglichen Position zu verschieben. Ich habe das Skript hinzugefügt, um dies zu ermöglichen.

Dies ist ein kompletter wilder Versuch, basierend auf
- diese Q & A: Wie verschiebe ich die Autoren-Metabox in die "Veröffentlichen" -Metabox?
- und das erste Codex-Beispiel: http://codex.wordpress.org/Function_Reference/add_meta_box

Ich führe den Code in einem Plugin (wp-content/mu-plugins/tests.php) aus und habe ihn nicht mit functions.php getestet.

Ich kann nicht garantieren, dass es sich um einen "richtigen" Code handelt, aber er funktioniert in meinem lokalen WordPress.

add_action( 'post_submitbox_misc_actions', 'wpse_52193_custombox_in_publish' );
add_action( 'save_post', 'wpse_52193_save_postdata' );
add_action( 'admin_head', 'wpse_52193_script_enqueuer');

function wpse_52193_custombox_in_publish() {
    global $post;
    if ('page' != get_post_type($post)) return;

    wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_noncename' );
    $checked = (get_post_meta($post->ID, 'myplugin_new_field',true)) ? 'checked="yes"' : '';

    echo '<div id="myplugin_new_field_div" class="misc-pub-section" style="border-top-style:solid; border-top-width:1px; border-top-color:#EEEEEE; border-bottom-width:0px;"><div style="font-weight: bold;">Description for this field:</div>';
    echo '<input name="myplugin_new_field" id="myplugin_new_field" type="checkbox" '.$checked.'>';
    echo '</div>';
}

function wpse_52193_save_postdata( $post_id ) {
    if ( 'page' != $_POST['post_type'] )
          return;

    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
        return;

    if ( !wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename( __FILE__ ) ) )
        return;

    $mydata = $_POST['myplugin_new_field'];
    update_post_meta($post_id, 'myplugin_new_field', $mydata);
}

function wpse_52193_script_enqueuer(){
    global $current_screen;
    if('page' != $current_screen->id) return;

    echo '<script type="text/javascript">
        jQuery(document).ready( function($) { 
            $("#myplugin_new_field_div").appendTo("#pageparentdiv"); 
         });
        </script>'; 
}
1
brasofilo

die seite hier hat viele fragen dazu, wie diese suche , auch eine google suche

auch ein Arbeitsbeispiel ( git rebo ), das Sie für Ihre Anforderung verwenden und ändern können

0
bueltge