首页 > 解决方案 > 在 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 时,上述所有方法都有效。但这根本不是私人的,因此它对我不起作用。

有针对这个的解决方法吗?或者也许是只使用一个插件的更优雅的解决方案?

标签: phpwordpressadvanced-custom-fields

解决方案


我已经意识到我的错误,我使用 CPT UI 为 ACF 字段创建了一个菜单,但我需要做的就是将这些字段添加到管理员中的 Wordpress 用户设置中。

这样我上面的代码就可以工作了,所以如果有人需要客户端仪表板,请随意使用它。

这是一个快速的屏幕共享:https ://www.loom.com/share/aab482dc0a05412b98d1529ee0ddcba5


推荐阅读