WordPress 元框

问题描述

谁能向我解释为什么这段代码没有保存 wp 元框从这个数组中选择值 $results 下面的代码支持使用 foreach

从 $results 中保存选定的值(从数组中我只需要一个键是组)
public function ewa_custom_Box_html( $post ) {
    $value = get_post_meta( $post->ID,'_groups_name_Meta_key',true );
    global $wpdb;
    $table_name = $wpdb->prefix . "my_groups";

    $results = $wpdb->get_results( "SELECT * FROM $table_name" );
    echo '<label for="groups_name_field" id="groups_name_field">Select from groups</label>';
        echo '<select>';
        foreach ($results as $key) {
          echo '<option value="'.$key->groups.'">'.selected($key->groups,). $key->groups .' </option>';
        }
    echo '</select>';
}

选择一个值后,它不保存!我怎样才能让它工作?

解决方法

在做了一些recherche之后,我终于找到了问题所在。 创建一个新数组来存储数据,然后我使用 foreach 循环在 github

上打印 select html 完整类中的所有键
   //Getting values( Selet key from array )
   public function ewa_groups_names_html( $post ) {
    $value = get_post_meta( $post->ID,'_ewa_groups_name_meta_key',false );
    global $wpdb;
    $table_name = $wpdb->prefix . "ewa_ads_groups";

    $results = $wpdb->get_results( "SELECT * FROM $table_name" );
    $groups = [];
    foreach ($results as $key) {
      $groups[] = $key->groups;
    }
    // if (empty($groups)) return;
    ?>
    <label for="groups_name"><?php esc_html('Select from groups') ?></label>
   
       <select name="ewa_groups_name_field" id="groups_name">
          <option> <?php _e('-- Select groups --') ?></option>
           <?php
           foreach ($groups as $group) {
             echo '<option value="'.$group.'" '.selected($value,$group,).'>'.$group.'</option>';
           }
            ?>
        </select> 
    <?php
  }

保存元框值

    public function ewa_save_postdata( $post_id ) {
    if (isset($_POST['ewa_groups_name_field'])) {
      $gp = sanitize_text_field($_POST['ewa_groups_name_field']);

        update_post_meta(
            $post_id,$gp
        );
      }
  }