【发布时间】:2021-10-27 12:15:59
【问题描述】:
当用户在我的 Wordress 网站上注册时,会自动创建一个自定义帖子(运动员),并将该用户指定为作者。自定义帖子本质上充当个人资料页面。
在他们的个人资料页面上,用户填写一堆或信息,total_score 被计算并保存为用户元数据。如果他们没有填写所有表格 - 他们将没有 total_score,因为它是在提交时计算的。
我为帖子(运动员)创建了一个自定义存档页面,并使用设置>阅读>帖子页面将其设置为默认帖子存档。
在帖子预览模板(使用 Ele Custom Skins 和 Elementor 创建和循环)上,我添加了一个名为 #total_score_circle 的元素 - 如下图所示。
如果该帖子的作者元数据中没有total_score,我想在帖子预览布局中隐藏#total_score_circle。
以下代码当前在所有帖子预览中隐藏了#total_score_circle,而不仅仅是作者元中不存在total_score 的代码。所以我的查询显然是关闭的。
任何帮助将不胜感激。
function total_score_display(){
if (is_home()){
global $post;
$author_id=$post->post_author;
$total_score = get_the_author_meta('total_score', $author_id);
if(empty($total_score)) : ?>
<style type="text/css">
#total_score_circle {
display: none !important;
}
</style>
<?php endif;
}
}
add_action( 'wp_head', 'total_score_display', 10, 1 );
前端是使用 Elementor Pro 创建的,我使用 Elementor 自定义皮肤创建了显示搜索结果的循环。
【问题讨论】:
-
1- 当您检查
is_home时,get_queried_object_id将返回主页的 ID 而不是用户 ID! 2- 不清楚total_score是如何创建的以及由谁创建的?每个用户都是作者吗?你为什么使用get_the_author_meta? 3- 这可以在您的模板文件中轻松完成,在循环部分,您为什么要尝试通过wp_head操作挂钩来完成? 请编辑您的问题并在模板中包含所有详细信息和循环结构/php-html 标记! -
嗨鲁维。谢谢您的帮助!我已更新问题并将代码更改为我使用的先前版本,因为它似乎更相关(我误解了 get_queried_object_id() 的功能)。我对存档页面不太了解,这就是我在这里的原因。
-
没关系!我明白,我只是想在我的最后“复制”它以便我可以帮助你,然后我看到了一些差异!再次没关系。唯一重要的是一个清晰且解释清楚的问题,以便人们可以帮助您调试代码。
-
我完成了你的任务,遇到了更多问题。因此,您有一个从数据库中查询的自定义帖子列表。对?使用该查询,您填充了您的
html template,它们是带有total score的卡片。对?您能否包含用于这些卡片的 HTML 模板?并且还包括您用来获取这些卡片数据的QUERY。 -
如果帖子的作者没有设置分数,那么卡片上不应有任何空的绿色圆圈。是对的吗?如果是这样,那么您尝试使用您提供的代码解决它的方式是不正确的。我们需要通过“您的自定义模板和查询”NOT 通过“wp_head 和 css”来完成。
标签: php wordpress metadata elementor usermetadata