2017-02-23 1 views
0

Ich arbeite derzeit durch Tutorials, wie ein WordPress-Plugin zu erstellen, aber aus irgendeinem Grund funktioniert mein Code nicht, wenn es um den Teil kommt, wo die Post Meta-Daten in der Datenbank gespeichert werden . Wenn ich auf Veröffentlichen oder Aktualisieren klicke, wird nur die Seite aktualisiert und der Inhalt in den Feldern ist verschwunden. Dieses Tutorial wurde 2015 erstellt und ich bin mir nicht sicher, ob etwas in meinem Code fehlt oder ob Änderungen daran vorgenommen wurden, wie WordPress die Daten speichert. Hier ist ein Link zum Tutorial spezifischen Video - https://www.youtube.com/watch?v=waS0gCkuLeM&t=64s&index=10&list=PLIjMj0-5C8TI7Jwell1rTvv5XXyrbKDcySaving WordPress Post Meta auf der Datenbank funktioniert nicht

Und hier ist mein Code aus diesem Tutorial unter:

<?php 

function fd_add_custom_metabox(){ 

add_meta_box(

     'fd_meta', 
     'Pricing Table', 
     'fd_meta_callback', 
     'table', 
     'normal', 
     'core' 

     );} 

add_action('add_meta_boxes', 'fd_add_custom_metabox'); 

function fd_meta_callback($post){ //needed for the $callback parameter above 
    wp_nonce_field(basename(__FILE__), 'fd_table_nonce'); 
    $fd_stored_meta = get_post_meta($post->ID); 


    ?> 

<div> 
    <div class="meta-row"> 
     <div class="meta-th"> 
      <label for="table-title" class="fd-row-title">Title</label> 
     </div> 
     <div class="meta-td"> 
      <input type="text" name="table_id" id="table-title" value="<?php if(!empty ($fd_stored_meta['table_id'])) {echo esc_attr($fd_stored_meta['table_id'][0]); } ?> "> 
     </div> 
    </div> 
</div> 
<div> 
    <div class="meta-row"> 
     <div class="meta-th"> 
      <label for="table-subtitle" class="fd-row-title">Subtitle</label> 
     </div> 
     <div class="meta-td"> 
      <input type="text" name="table_subtitle" id="table-subtitle" value="<?php if(!empty ($fd_stored_meta['table_subtitle'])) {echo esc_attr($fd_stored_meta['table_subtitle'][0]);} ?> "> 
     </div> 
    </div> 
</div> 
<div> 
    <div class="meta-row"> 
     <div class="meta-th"> 
      <label for="table-recurrence" class="fd-row-title">Recurrence</label> 
     </div> 
     <div class="meta-td"> 
      <input type="text" name="table_recurrence" id="table-recurrence" value=""> 
     </div> 
    </div> 
</div> 
<div> 
    <div class="meta-row"> 
     <div class="meta-th"> 
      <label for="table-price" class="fd-row-title">Price</label> 
     </div> 
     <div class="meta-td"> 
      <input type="text" name="table_price" id="table-price" value=""> 
     </div> 
    </div> 
</div> 
<div> 
    <div class="meta-row"> 
     <div class="meta-th"> 
      <span>Features</span> 
     </div> 
     <div class="meta-td"> 

      <textarea name="table_features" rows="8" cols="50"></textarea> 
     </div> 
    </div> 
</div> 
<div class="meta"> 
    <div class="meta-th"> 
     <span>Some Description</span> 
    </div> 
</div> 
<div class="meta-editor"> 
<?php 

    $content = get_post_meta($post->ID, 'some_description', true); 
    $editor = 'some_description'; 
    $settings = array(
    'textarea_rows' => 8, 
    'media_buttons' => true, 

    ); 

    wp_editor($content, $editor, $settings); 
?> 
    </div> 

<?php 


} 

function fd_meta_save($post_id){ 
    //checks save status 
    $is_autosave = wp_is_post_autosave($post_id); 
    $is_revision = wp_is_post_revision($post_id); 
    $is_valid_nonce = (isset($_POST[ 'fd_table_nonce']) && wp_verify_nonce($_POST['fd_table_nonce'], basename(__FILE__)))? 'true' : 'false'; 

    //Exits script depending on save status 
    if ($is_autosave || $is_revision || !$is_valid_nonce){ 
     return; 
    } 

    if (isset ($_POST['table_id'])){ 
     update_post_meta($post_id, 'table_id', sanitize_text_field($_POST[ 'table_id' ])); 
    } 
    if (isset ($_POST['table_subtitle'])){ 
     update_post_meta($post_id, 'table_subtitle', sanitize_text_field($_POST[ 'table_subtitle' ])); 
    } 
    if (isset ($_POST['some_description'])){ 
     update_post_meta($post_id, 'some_description', sanitize_text_field($_POST[ 'some_description' ])); 
    } 
} 
add_action('save_post,', 'fd_meta_save'); 

Bitte beachten Sie, dass ich nur PHP in den ersten beiden Eingängen die Daten zu erfassen und der wp-editor, der zuletzt ist

Bitte helfen Sie mir zu zeigen, wo ich falsch gelaufen bin oder was sich in den letzten zwei Jahren geändert hat.

+0

Jeder Live-Link ?? –

+0

Können Sie bitte ein Stück Code schreiben, $ fd_stored_meta mit print_r drucken und prüfen, ob die Werte kommen oder nicht? danach $ fd_stored_meta = get_post_meta ($ post-> ID); – Tristup

+0

@Umair Wie kann ich diesen Code live weitergeben? Ich kenne nur Codepen und JSfiddle, aber sie unterstützen kein PHP, oder? Bitte lass es mich wissen – Feyt

Antwort

0

Ein Update zu dieser Frage. Es scheint, dass ich am Ende genau nach der Post ein Komma hatte - also sollte es so aussehen: add_action ('save_post', 'fd_meta_save'); statt dieser add_action ('save_post,', 'fd_meta_save');

Dies behoben mein Problem. Da es als String gelesen wurde, konnte es nicht als Syntaxfehler erkannt werden.

Lektion gelernt - nie aufhören, nach Syntaxfehlern zu suchen, auch wenn sie nicht vom Programm erkannt werden

Verwandte Themen