Lassen Sie den Autor das Feld zur Metabox hinzufügen, indem Sie eine Taste drücken

Ich habe eine benutzerdefinierte Metabox für Autoren hinzugefügt, wo sie eine URL zu einer Quelle ausfüllen können, die ich dann in meiner Vorlage verwenden kann.

In meiner functions.php

 _post_source; echo ''; echo '

Try to be as specific as possible.
Eg http://tweakers.net/nieuws/101372/ing-belgie-wil-betalingsgedrag-van-klanten-meer-gebruiken-voor-dienstverlening.html

'; } ?>

Ich möchte jedoch die Option zum Hinzufügen mehrerer Quellen hinzufügen. Ich dachte darüber nach, und das benutzerfreundlichste scheint eine Schaltfläche hinzuzufügen, die der Metabox ein Eingabefeld hinzufügt. Etwas wie das: http://jsfiddle.net/BramVanroy/23n6s717/

 counter = 0; $(".add-field").click(function() { counter++; $("#source_post").after(''); }); 

Ich weiß jedoch nicht, wie ich diese neuen Eingabefelder mit meinem Backend verbinden kann. Wie kann ich WordPress wissen lassen, dass es mehrere Felder gibt, die berücksichtigt und gespeichert werden müssen? Und wie kann ich alle ausgeben?

Solutions Collecting From Web of "Lassen Sie den Autor das Feld zur Metabox hinzufügen, indem Sie eine Taste drücken"

Ich habe alles zusammen gepackt. Verwenden Sie wp_enqueue_script() , um das Skript zu verwenden. Mit diesem Code speichern Sie alle URLs als Array. Sehen Sie, wie ich mit get_post_meta() die gespeicherten URLs abruft.

 function save_custom_metabox($post_id){ if(!isset($_POST['source_post_metabox_nonce'])) : return; endif; if(!wp_verify_nonce( $_POST['source_post_metabox_nonce'], 'source_post_metabox')) : return; endif; if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) : return; endif; if(!current_user_can('edit_post', $post_id)) return; if ( isset( $_POST['source_post'] ) ) { foreach( $_POST['source_post'] as $key => $val ) $_POST['source_post'][ $key ] = sanitize_text_field( $val ); update_post_meta( $post_id, '_post_source', $_POST['source_post'] ); } } add_action('save_post', 'save_custom_metabox'); function output_source_metabox($post){ wp_nonce_field('source_post_metabox', 'source_post_metabox_nonce'); $post_sources = get_post_meta( $post->ID, '_post_source', true ); if( is_array( $post_sources ) ) foreach( $post_sources as $post_source ) echo '
'; else echo '
'; echo ''; echo '

Try to be as specific as possible.
Eg http://tweakers.net/nieuws/101372/ing-belgie-wil-betalingsgedrag-van-klanten-meer-gebruiken-voor-dienstverlening.html

'; echo ''; }

Verwendung in Vorlagendateien

Sie können diese URLs in folgenden Vorlagendateien ausgeben:

 < ?php //We expect $post_sources to be an array $post_sources = get_post_meta( get_the_ID(), '_post_source', true ); if( ! empty( $post_sources ) && count( $post_sources ) > 0 ): //Output all sources as a list if sources exist ?> 
    < ?php foreach( $post_sources as $post_source ): ?>
  • < ?php echo $post_source; ?>
  • < ?php endforeach; ?>
< ?php endif; if( isset( $post_sources[ 0 ] ) ): //Output only a single source, in this case the first one ?>

< ?php echo $post_sources[ 0 ]; ?>

< ?php endif; ?>