我已经创建了一个名为“teacher”的自定义帖子类型,我想使用此人的显示名作为其帖子的标题。
详情:1。“教师”自定义帖子类型支持标题。2、只有登录的教师才能发帖。3、我正在使用frontend posting by Rev Voodoo
我根据在这里找到的各种片段提出了这一点,但无法实现:
function wpa65253_teacher_title( $title ) {
global $post;
if ( isset( $post->ID ) ) :
if ( empty( $_POST[\'post_title\'] ) && in_the_loop() && \'teacher\' == get_post_type( $post->ID ) )
$title = get_user_meta($user->ID, \'display_name\', true);
endif;
return $title;
}
add_action( \'submitpost_box\', \'wpa65253_teacher_title\' );
我看到了关于基于自定义字段创建标题的各种问题,但我想从用户档案中的用户名中提取它们。
This code by t31os 也不再有效:
add_action( \'submitpost_box\', \'hidden_type_title\' );
function hidden_type_title() {
global $current_user, $post, $post_type;
// If the current type supports the title, nothing to done, return
if( post_type_supports( $post_type, \'title\' ) )
return;
?>
<input type="hidden" name="post_title"value="<?php echo esc_attr( htmlspecialchars( get_the_author_meta( \'display_name\', $current_user->data->ID ) ) ); ?>" id="title" />
<?php
}
我做错了什么?
最合适的回答,由SO网友:s_ha_dum 整理而成
如果您使用的是Rev Voodoo的代码,那么您需要编辑该代码,而不是试图连接到WordPress核心代码。该链接中的表单提交给自己,并处理自己的后处理,从而绕过许多核心挂钩。
您尝试使用的一些挂钩不起作用。如果不进行更彻底的调查,我不会发誓,但我不认为我会使用或试图使用submitpost_box
用于此目的的挂钩(它在显示编辑表单时运行,而不是在提交表单时运行)。在这种情况下,它肯定不会起作用,因为Voodoo Rev的代码从未加载使用该钩子的页面--wp-admin/edit-form-advanced.php
.
在我看来,您需要编辑以下内容:
// Do some minor form validation to make sure there is content
if (isset ($_POST[\'title\'])) {
$title = $_POST[\'title\'];
} else {
echo \'Please enter the wine name\';
}
我不知道你想从哪里得到你的老师的名字。我对此不太满意,但你说“只有登录的老师才能发帖”
如果您已充分锁定表单,则可以执行类似的操作,而不是执行该代码:// Do some minor form validation to make sure there is content
global $currentuser;
get_currentuserinfo();
if (isset($current_user->display_name)) {
$title = $current_user->display_name;
} else {
echo "No user data";
}
许多警告:根据您的陈述,完全未经测试
我想使用此人的显示名称作为其帖子的标题
那段代码完全劫持了标题。如果要将显示名称附加或前置到其他无法使用的标题。
你有机会得到像john-smith
, john-smith-2
, john-smith-3
, etc我担心使用get_currentinfo
因为我不知道如何控制对表单的访问。如果访问表单的权限不足,则任何用户都可以发布为教师