尝试以下操作:
if ( ! function_exists( \'customField\' ) ) :
function customField($name, $id=false, $single=false){
global $post_type, $post;
$name=trim($name);
$prefix=\'\'; // only if you need this
$data=NULL;
if($id!==false && !empty($id) && $id > 0)
$getMeta=get_post_meta((int)$id, $prefix.$name, $single);
else if(isset($post->ID) && $post->ID > 0)
$getMeta=get_post_meta($post->ID,$prefix.$name, $single);
else if(\'page\' == get_option( \'show_on_front\' ))
$getMeta=get_post_meta(get_option( \'page_for_posts\' ),$prefix.$name, $single);
else if(is_home() || is_front_page() || get_queried_object_id() > 0)
$getMeta=get_post_meta(get_queried_object_id(),$prefix.$name, $single);
else
$getMeta=get_post_meta(get_the_id(),$prefix.$name, $single);
if(isset($getMeta[0])) $data=$getMeta[0];
if($data===false || !is_numeric($data) && (empty($data) || is_null($data))) return NULL;
$return = preg_replace(array(\'%<p>(<img .*?/>)</p>%i\',\'%<p> </p>%i\',\'/^\\s*(?:<br\\s*\\/?>\\s*)*/i\'), array(\'$1\',\'\',\'\'),$data);
return (!empty($return)?$return:NULL);
}
endif;
echo customField("story"); // Default
echo customField("story", 55); // With custom page ID
这段代码工作得很好,因为我是为自己的作品构建这段代码的。如果return为空,则在您设置pharameters的地方不保存数据。如果您使用metabox,也要注意它的前缀。