如何在 wordpress 短代码中添加 if 和 else 条件
How to add if and else condition in wordpress shortcode
我有一个显示当前用户用户名的短代码,它可以工作。我想做的是插入条件。
如果用户有用户名,则显示它,否则显示名字或其他名称。
我在 google 上搜索并在堆栈中搜索,我知道这是可能的,这要归功于 if 和 else 条件,但我从来没有这样做过,有人可以帮助我了解如何将这些条件插入到我的简码?
我还想显示其他信息,例如电子邮件、姓氏、注册日期等,是否有关于从何处获取所有这些值的文档/列表?
function display_current_username () {
$user = wp_get_current_user();
$name = $user->display_name;
return $user->display_name;
}
add_shortcode('display_name', 'display_current_username');
If/Else
条件句是 PHP 的基础方面。不管是不是WP,它们都是一样的。
要回答主要问题,您可以添加如下条件:
function display_current_username () {
/* ADDED BASED ON WPEXPERTS ANSWER
This is a really good check to do to make sure that WP doesn't
throw an error if wp_get_current_user returns FALSE/0
*/
if( !is_user_logged_in() ) :
return 'Something if user isn\'t logged in';
endif;
$user = wp_get_current_user();
$name = $user->display_name;
// If the $name var is empty, return the user_firstname property.
if ( $name === '' ) :
return $user->user_firstname;
endif;
return $name;
}
add_shortcode('display_name', 'display_current_username');
可以在此处找到使用 wp_get_current_user()
返回的用户数据对象的所有文档:https://developer.wordpress.org/reference/functions/wp_get_current_user/#comment-437
要获取更多用户数据,请使用 get_userdata()
function
您可以通过用户id获取所有数据:
$user_data = get_userdata( $user->ID );
您也可以在短代码中使用它。像这样:
function display_current_username () {
$user = wp_get_current_user();
$name = $user->display_name;
$user_data = get_userdata( $user->ID );
/*
Do something with the $user_data information
for example:
$user_registration_date = $user_data->user_registered;
*/
// If the $name var is empty, return the user_firstname property.
if ( $name === '' ) :
return $user->user_firstname;
endif;
// This is super basic and is only an example of what you can do.
return 'User name: ' . $name . "\n\r" . 'User registered: ' . $user_registration_date;
}
add_shortcode('display_name', 'display_current_username');
get_userdata
是 get_user_by()
的 wrapper/helper。这是 get_userdata()
返回的完整对象:https://developer.wordpress.org/reference/functions/get_user_by/#comment-495
编辑
基于评论中的问题
function display_current_username () {
$user = wp_get_current_user();
$display_name = $user->display_name;
$first_name = $user->user_firstname;
$name = 'Set Custom Text Here';
// If display name isn't empty;
if ( $display_name !== '' ) :
return $display_name;
endif;
// If first name isn't empty;
if ( $first_name !== '' ) :
return $first_name;
endif;
/* THIS COULD ALSO BE USED
// This just assigns the user properties to the $name var
// instead of returning.
if ( $display_name !== '' ) :
$name = $display_name;
elseif ( $first_name !== '' ) :
$name = $first_name;
endif;
*/
// If it gets to this point, return the custom text.
return $name;
}
add_shortcode('display_name', 'display_current_username');
试试这个:
add_shortcode('display_name', 'display_current_username');
function display_current_username () {
if( !is_user_logged_in() ){
return '';
}
$user_id = get_current_user_id();
$user_data = get_userdata( $user_id );
$first_name = get_user_meta( $user_id, 'first_name', 1 );
if( !empty( $first_name ) ){
return $first_name;
} elseif( !empty($user_data->user_nicename) ){
return $user_data->user_nicename;
} else {
return $user_data->display_name;
}
}
我有一个显示当前用户用户名的短代码,它可以工作。我想做的是插入条件。
如果用户有用户名,则显示它,否则显示名字或其他名称。
我在 google 上搜索并在堆栈中搜索,我知道这是可能的,这要归功于 if 和 else 条件,但我从来没有这样做过,有人可以帮助我了解如何将这些条件插入到我的简码?
我还想显示其他信息,例如电子邮件、姓氏、注册日期等,是否有关于从何处获取所有这些值的文档/列表?
function display_current_username () {
$user = wp_get_current_user();
$name = $user->display_name;
return $user->display_name;
}
add_shortcode('display_name', 'display_current_username');
If/Else
条件句是 PHP 的基础方面。不管是不是WP,它们都是一样的。
要回答主要问题,您可以添加如下条件:
function display_current_username () {
/* ADDED BASED ON WPEXPERTS ANSWER
This is a really good check to do to make sure that WP doesn't
throw an error if wp_get_current_user returns FALSE/0
*/
if( !is_user_logged_in() ) :
return 'Something if user isn\'t logged in';
endif;
$user = wp_get_current_user();
$name = $user->display_name;
// If the $name var is empty, return the user_firstname property.
if ( $name === '' ) :
return $user->user_firstname;
endif;
return $name;
}
add_shortcode('display_name', 'display_current_username');
可以在此处找到使用 wp_get_current_user()
返回的用户数据对象的所有文档:https://developer.wordpress.org/reference/functions/wp_get_current_user/#comment-437
要获取更多用户数据,请使用 get_userdata()
function
您可以通过用户id获取所有数据:
$user_data = get_userdata( $user->ID );
您也可以在短代码中使用它。像这样:
function display_current_username () {
$user = wp_get_current_user();
$name = $user->display_name;
$user_data = get_userdata( $user->ID );
/*
Do something with the $user_data information
for example:
$user_registration_date = $user_data->user_registered;
*/
// If the $name var is empty, return the user_firstname property.
if ( $name === '' ) :
return $user->user_firstname;
endif;
// This is super basic and is only an example of what you can do.
return 'User name: ' . $name . "\n\r" . 'User registered: ' . $user_registration_date;
}
add_shortcode('display_name', 'display_current_username');
get_userdata
是 get_user_by()
的 wrapper/helper。这是 get_userdata()
返回的完整对象:https://developer.wordpress.org/reference/functions/get_user_by/#comment-495
编辑
基于评论中的问题
function display_current_username () {
$user = wp_get_current_user();
$display_name = $user->display_name;
$first_name = $user->user_firstname;
$name = 'Set Custom Text Here';
// If display name isn't empty;
if ( $display_name !== '' ) :
return $display_name;
endif;
// If first name isn't empty;
if ( $first_name !== '' ) :
return $first_name;
endif;
/* THIS COULD ALSO BE USED
// This just assigns the user properties to the $name var
// instead of returning.
if ( $display_name !== '' ) :
$name = $display_name;
elseif ( $first_name !== '' ) :
$name = $first_name;
endif;
*/
// If it gets to this point, return the custom text.
return $name;
}
add_shortcode('display_name', 'display_current_username');
试试这个:
add_shortcode('display_name', 'display_current_username');
function display_current_username () {
if( !is_user_logged_in() ){
return '';
}
$user_id = get_current_user_id();
$user_data = get_userdata( $user_id );
$first_name = get_user_meta( $user_id, 'first_name', 1 );
if( !empty( $first_name ) ){
return $first_name;
} elseif( !empty($user_data->user_nicename) ){
return $user_data->user_nicename;
} else {
return $user_data->display_name;
}
}