php - 在 wordpress 上向登录的客户显示私人内容
问题描述
我目前正在尝试在我的站点上设置一个客户端仪表板,该仪表板应该充当所有交换文件(例如发票、设计提案、原型等)的存档。我使用 ACF 添加文件并将其映射到一个用户在 ACF 中使用“用户”字段,但不是在任何人都可以通过知道 URL 访问的站点上显示它们,我需要一个用于登录用户的私有站点。
我为主题 Astra 创建了一个子主题,以便编辑 php 文件。然后我创建了自己的文件,并使用以下代码在 wp admin 中创建页面时使用该模板:
<?php /* Template Name: Kundenbereich */ ?>
然后,我使用一些 html 和 css 创建了该模板,并使用 php 来提取数据,例如登录用户的名称,效果很好:
<h1>
Willkommen,
<?php
global $current_user;
wp_get_current_user() ;
echo $current_user->display_name;
?>!
</h1>
然后我的计划是将使用此模板创建的页面添加为插件 UsersWP 中的帐户页面,该页面将其与其他任何人锁定,因此只有登录用户才能查看它。我怀疑这一步会破坏代码,所以我在未添加到 UsersWP 的页面上尝试了它,但所有 ACF php 函数都中断了。这个想法是 ACF 检查谁已登录,然后从在“用户”字段中设置了相应用户的数据集中提取文件。
这是不起作用的代码:
<?php $current_user_id = get_current_user_id(); ?>
<p>
<?php the_field('kundenname', 'user_' . $current_user_id); ?>
</p>
<?php if( get_field('angebot', 'user_' . $current_user_id) ): ?>
<a href="<?php the_field('angebot', 'user_' . $current_user_id); ?>" >Herunterladen</a>
<? else: ?>
<a href="#" >Nicht verfügbar</a>
<?php endif; ?>
我尝试过的用户的 ID 为 1,但即使将代码更改
<?php the_field('kundenname', 'user_1'); ?>
为什么也没做,我不知道为什么。
当我使用永久链接并且不尝试检查用户 ID 时,上述所有方法都有效。但这根本不是私人的,因此它对我不起作用。
有针对这个的解决方法吗?或者也许是只使用一个插件的更优雅的解决方案?
解决方案
我已经意识到我的错误,我使用 CPT UI 为 ACF 字段创建了一个菜单,但我需要做的就是将这些字段添加到管理员中的 Wordpress 用户设置中。
这样我上面的代码就可以工作了,所以如果有人需要客户端仪表板,请随意使用它。
这是一个快速的屏幕共享:https ://www.loom.com/share/aab482dc0a05412b98d1529ee0ddcba5
推荐阅读
- django - 如何在 Django 我们应用程序中为 mongoDB 连接配置 settings.py
- asp.net-core - 如何防止通过 IHttpClientFactory 的 HttpClient 登录到 ILogger?
- sql-server - SQL Server 2008 R2 - 在 Lag / CTE 中考虑前一天 - 使用上一行或下一行的值
- swift - 每秒调用多次的函数中的延迟代码
- python - 在 for 循环中从列表中解压缩多个参数
- c# - 上传文件从邮递员那里工作,但不是通过代码
- scala - 可以在 spark 中处理多字符分隔符
- javascript - 使用 node.js 检查 mysql 表
- c# - 每个具有多个 azure 功能的解决方案的通用配置文件问题
- javascript - D3 交互式图例和线条