WordPress后台个人资料增加字段在前台调用

共计3393字,阅读大约12分钟。

[h2set]前言[/h2set]

人总会有莫名其妙的需求和想法,比如这个标题描述。

And like me.

其实这个需求也不是莫名其妙,只是WP支持的联系方式都是国外的,国人得各取所需嘛。

我想客制化给用户自定义页面布局功能,是本站迈向多作者模式很重要的一步,所以后台个人资料有时候得深究一下,未完待续吧。

一、增删字段

来到主题 function.php 文件

//新增个人资料
//增加国内联系方式,移除国外联系方式
function Naive_Add_PersonalData($contactmethods)
{
	$contactmethods['acsign'] = '个性签名(显示在文章目录上面)';
	$contactmethods['acqq'] = 'QQ';
	$contactmethods['acbilibili'] = '哔哩哔哩';
	$contactmethods['acwyy'] = '网易云音乐';
	$contactmethods['acxhs'] = '小红书';
	$contactmethods['acdy'] = '抖音';
	$contactmethods['acgithub'] = 'Github';
	$contactmethods['donate'] = '赞助链接';
	unset($contactmethods['yim']);
	unset($contactmethods['aim']);
	unset($contactmethods['jabber']);
	return $contactmethods;
}
add_filter('user_contactmethods', 'Naive_Add_PersonalData');

二、前台调用

在以上代码中增加了一个【‘acsign’】,是作者签名。

我已经把作者填写的 ‘acsign’ 字段 显示在了文章右侧边栏作者名字下面。

调用代码如下。

意思是读取这篇文章作者的签名。

这里强调一下用 get_the_author_meta('acsign')

而不是 the_author_meta('acsign')

是为了get能判断非空,不然很难看呦!

<!--  调用签名-->
<?php 
if (get_the_author_meta('acsign')) {
    echo  get_the_author_meta('acsign') ;
} ?>
图片[1] | Web Stack | WordPress后台个人资料增加字段在前台调用 | 一个栈
后台
图片[2] | Web Stack | WordPress后台个人资料增加字段在前台调用 | 一个栈
前台

 

三、进阶玩法

概要

用户可以前台看到自己提交的信息进度和用户的文件

代码

[precode]

//function文件添加字段方法
add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );
 
function extra_user_profile_fields( $user ) { ?>
<h3><?php _e("进度信息", "blank"); ?></h3>
 
<table class="form-table">
	<tr>
		<th><label for="jindu"><?php _e("进度通知"); ?></label></th>
		<td>
			<input type="text" name="jindu" id="jindu" value="<?php echo esc_attr( get_the_author_meta( 'jindu', $user->ID ) ); ?>" class="regular-text" /><br />
			<span class="description"><?php _e("填写规范:通过,审核中,未通过"); ?></span>
		</td>
	</tr>
	<tr>
		<th><label for="jinducolor"><?php _e("审核颜色"); ?></label></th>
		<td>
			<input type="text" name="jinducolor" id="jinducolor" value="<?php echo esc_attr( get_the_author_meta( 'jinducolor', $user->ID ) ); ?>" class="regular-text" /><br />
			<span class="description"><?php _e("填写规范:通过:green,审核中:orange,未通过:red"); ?></span>
		</td>
	</tr>
	<tr>
		<th><label for="jindutime"><?php _e("最后审核时间"); ?></label></th>
		<td>
			<input type="text" name="jindutime" id="jindutime" value="<?php echo esc_attr( get_the_author_meta( 'jindutime', $user->ID ) ); ?>" class="regular-text" /><br />
			<span class="description"><?php _e("最后审核时间"); ?></span>
		</td>
	</tr>
	<tr>
		<th><label for="xinxi"><?php _e("信息下载"); ?></label></th>
		<td>
			<input type="text" name="xinxi" id="xinxi" value="<?php echo esc_attr( get_the_author_meta( 'xinxi', $user->ID ) ); ?>" class="regular-text" /><br />
			<span class="description"><?php _e("信息下载"); ?></span>
		</td>
	</tr>
</table>
<?php }
 
add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
 
function save_extra_user_profile_fields( $user_id ) {
 
	if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
 
	update_usermeta( $user_id, 'jindu', $_POST['jindu'] );
	update_usermeta( $user_id, 'jindutime', $_POST['jindutime'] );
	update_usermeta( $user_id, 'jinducolor', $_POST['jinducolor'] );
	update_usermeta( $user_id, 'xinxi', $_POST['xinxi'] );
}
[/precode]

调用

[precode]<?php echo $current_user->jinducolor;?>">[/precode]

四、未完待续

温馨提示:本文最后更新于2022-07-08 22:44:56,某些文章具有时效性,若有错误或已失效,请在下方留言或联系雅舍站长
© 版权声明
THE END
有所帮助就支持一下吧
点赞0当赏 分享
箴言区 抢沙发
头像
达瓦里希请发言...
提交
头像

昵称

取消
昵称表情代码图片