你好@Zack:
因为你的问题不清楚,我在这里有点冒险。听起来您希望能够在vistor列表中显示访问者的名字和姓氏,而不是“自动草稿?”如果是这样,此代码应该适合您:
add_action( \'the_title\', \'make_vistor_title\', 10, 2 );
function make_vistor_title($title,$post_id) {
global $pagenow,$typenow;
if ($pagenow==\'edit.php\' && $typenow==\'visitor\') {
return the_visitor_title($post->ID);
}
return $title;
}
function the_visitor_title($post_id) {
return get_post_meta( $post_id, \'v_f_name\', true ) . \' \' .
get_post_meta( $post_id, \'v_l_name\', true );
}
如果您希望无论在何处都能使用此版本的
make_visitor_title()
而是:
function make_vistor_title($title,$post_id) {
$post = get_post($post_id);
if ($post->post_type==\'visitor\') {
$title = the_visitor_title($post->ID);
}
return $title;
}
当然是另一个(更好?)选项是使用捕获帖子上的名字,并基于两(2)个自定义元字段中的值创建标题
\'v_f_name\'
和
\'v_l_name\'
使用下面这样的代码(这比我希望的要复杂得多,但这就是我让它工作的原因-也许其他人可以建议一种更简单的方法?)
add_action( \'admin_init\', \'visitor_post_admin_init\', 10, 2 );
function visitor_post_admin_init() {
global $pagenow;
if ($pagenow==\'post.php\' && isset($_POST[\'action\']) && $_POST[\'action\']==\'editpost\') {
if (empty($_POST[\'post_title\'])) {
$_POST[\'post_title\'] = get_visitor_title_from_POST($_POST);
}
}
}
add_action( \'wp_insert_post_data\', \'insert_visitor_data\', 10, 2 );
function insert_visitor_data($data,$postarr) {
if ($data[\'post_type\']==\'actor\' && !in_array($data[\'post_status\'],array(\'draft\',\'auto-draft\'))) {
if (isset($postarr[\'meta\'])) {
extract($postarr);
$post_title = get_visitor_title_from_POST($postarr);
if (!empty($post_title))
$data[\'post_title\'] = trim($post_title);
$post_name = sanitize_title_with_dashes($post_title);
$data[\'post_name\'] = wp_unique_post_slug($post_name, $ID, $post_status, $post_type, $post_parent);
}
}
return $data;
}
function get_visitor_title_from_POST($POST) {
$meta = array();
foreach($POST[\'meta\'] as $key_value)
$meta[$key_value[\'key\']] = $key_value[\'value\'];
if (isset($POST[\'metavalue\'])) {
if (isset($POST[\'metakeyselect\']) && $POST[\'metakeyselect\']!=\'#NONE#\') {
$meta[$POST[\'metakeyselect\']] = $POST[\'metavalue\'];
} else {
$meta[$POST[\'metakeyinput\']] = $POST[\'metavalue\'];
}
}
$title = (isset($meta[\'v_f_name\']) ? "{$meta[\'v_f_name\']} " : \'\');
if (isset($meta[\'v_l_name\']))
$title .= $meta[\'v_l_name\'];
return trim($title);
}