我有一个包含一些数据的自定义数据库表。目前,我只想在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
}
}
}
但现在我在一行中获得了每列的所有数据库表内容。
最合适的回答,由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;