
在许多wordpress应用场景中,例如用户个人资料页面(profile page)、用户发布的内容详情页,我们经常需要实现一个功能:只有当当前登录的用户是该页面内容(文章或自定义文章类型)的作者时,才显示特定的操作按钮(如“编辑资料”、“编辑文章”)或个性化内容。这不仅能提供更好的用户体验,也能避免未授权用户看到不相关的操作选项。
原始尝试的代码片段如下:
if($user_session_id == $author_id) {
?>
<style type="text/css">
#profile_edit_button {
display: flex !important;
}
</style>;
<?php } ?>这段代码存在两个主要问题:
要正确实现此功能,我们需要利用WordPress提供的核心函数和钩子:
通过在 functions.php 文件中定义一个函数并将其挂载到适当的钩子,我们可以确保代码在正确的时机执行,并且能够访问到所需的WordPress上下文信息。
将以下代码添加到您的活动主题的 functions.php 文件中。
<?php
/**
* 根据当前用户是否为文章作者,动态显示特定元素
*/
function current_user_is_post_author_conditional_display(){
// 确保只在单篇文章页面(包括自定义文章类型)执行此逻辑
if( is_single() ){
// 声明全局 $post 对象,以便访问当前文章的信息
global $post;
// 获取当前登录用户的ID
$current_user_id = get_current_user_id();
// 获取当前文章的作者ID
$post_author_id = $post->post_author;
// 判断当前用户ID是否与文章作者ID匹配
if( $current_user_id == $post_author_id ) {
// 如果匹配,则输出CSS样式以显示指定的元素
// 这里假设要显示的元素ID是 #profile_edit_button
?>
<style type="text/css">
#profile_edit_button {
display: flex !important; /* 使用 flex 或其他适合的显示属性 */
}
</style>
<?php
}
}
}
// 将上述函数挂载到 wp_head 钩子,使其在页面的 <head> 部分输出
add_action( 'wp_head', 'current_user_is_post_author_conditional_display', 10, 1 );
?>代码解析:
#profile_edit_button {
display: none;
}if ( get_current_user_id() == $post->post_author ) {
echo '<button id="profile_edit_button">编辑我的资料</button>';
}这种方式更直接,但可能需要修改模板文件。本教程的CSS注入方式更适合在不修改模板文件的情况下实现。
通过上述方法,我们成功地解决了在WordPress中根据当前用户身份动态显示特定元素的问题。这种方法利用了WordPress的内置功能和推荐的开发实践,确保了代码的健壮性、可维护性和安全性。无论是用于用户资料页面的编辑按钮,还是其他需要根据作者身份进行个性化展示的场景,这种技术都提供了一个可靠的解决方案。
以上就是WordPress教程:根据当前用户身份动态显示文章编辑按钮或特定内容的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号