如何在自定义数据库表上使用此代码?

时间:2015-11-28 作者:alex

我有一个包含一些数据的自定义数据库表。目前,我只想在WordPress管理区域中显示表中包含的值的概述。

add_filter(\'manage_mycustom_posts_columns\', array($this, \'xxx_columns_head\'));
add_action(\'manage_mycustom_posts_custom_column\', array($this, \'xxx_columns_content\'));

public function xxx_columns_content($column_name) {
    global $post;
    $post_ID = $post->ID;
    $values = $this->xxxx_get_cpt_data($post_ID);
    //print_r($values);
}

public function xxxx_get_cpt_data($post_ID) {
    $cpt_values = get_post_custom($post_ID);
    if ($cpt_values) {
        return $cpt_values;
    }
}
我意识到我不能使用这个功能get_post_custom() 以及$post_ID 在我的自定义表中未使用。那么我怎样才能做一个函数呢xxx_get_post_custom(...) 以便我可以填充概览值?

[编辑]

    public function xxxx_get_cpt_data() {
    global $wpdb;
    $sql = "SELECT * FROM custom_table";
    $cpt_values = $wpdb->get_results($sql);
    //print_r($cpt_values);
    if ($cpt_values) {
              return $cpt_values->column_name;
         }else {
              return \' \';  
         }

}
对于列内容:

public function xxxx_columns_content($column_name) {

        $values = $this->xxxx_get_cpt_data();
        print_r($values);//

      foreach ($values as $value) {
        //print_r($value[0]);
        $value = $value[0];
            if ($column_name == \'name\') {
                $name = isset($value[\'name\']) ? esc_attr($value[\'name\'][0]) : \'\';
                echo $name;
            }
.....other columns content
        }
  }

}
但现在我在一行中获得了每列的所有数据库表内容。

1 个回复
最合适的回答,由SO网友:Kvvaradha 整理而成

是的,您必须编写一个自定义函数并在管理列上调用它,这将帮助您获得必要的内容。

     public function xxxx_get_cpt_data($post_ID) {
          //        $cpt_values = get_post_custom($post_ID);
           global $wpdb;

             $sql = "SELECT * FROM ". $wpdb->prefix. "custom_table WHERE post_ID=". $post_ID. " LIMIT 1" ;
              $cpt_values = $wpdb->get_results($sql);
            if ($cpt_values) {
                  return $cpt_values->column_name;
             }else {
                  return \' \';  
             }
       }
但是get_results 返回对象数组。如果希望得到单一结果,请使用get_var. 如果自定义表上有多个值,请使用get_results 像这样使用它$obj->coulmn_name;