提问人:Phantom001 提问时间:9/19/2023 更新时间:9/19/2023 访问量:21
WordPress 函数在每个get_post循环中注入 php 代码以决定是否显示帖子
WordPress function inject php code at every get_post loop to decide if post gets displayed
问:
我编写了一个简单的 php 代码,根据帖子自定义字段检查用户角色,以决定帖子是否显示在列表中。
如果我在手动发布循环中编写代码并在发布结构周围制作一个 if,它就可以正常工作。
现在我想把它打包成一个函数,在每get_post自动运行,但在这里,我的 wordpress 知识已经结束了......
我只找到了防止帖子根据类别显示的示例。
它自己的代码不是很相关...... 仅当 $ure_display 变量设置为 true = 在列表中显示帖子时,否则隐藏帖子。
代码:
<?php
$user = wp_get_current_user();
$get_roles = ( array ) $user->roles;
$cust = get_post_custom($post_id);
$ure_roles = $cust["ure_content_for_roles"][0];
$ure_flag = $cust["ure_prohibit_allow_flag"][0];
$ure_display = "false";
$permchk = 0;
foreach ($get_roles as $value) {
if (str_contains($ure_roles, $value)) {
$permchk = 1;
}
}
if ($permchk == 1 && $ure_flag == 2){
$ure_display = "true";
echo $ure_display;
}
?>
我希望有人能帮我举个例子。
谢谢!
答:
0赞
Rosie Steele
9/19/2023
#1
要为 WordPress 中的每个“get_post”循环自动执行 PHP 代码,您可以使用“the_post钩子”,该钩子在显示每个帖子之前触发。下面是如何实现此目的的示例:
function custom_post_display_logic($post) {
$user = wp_get_current_user();
$get_roles = (array) $user->roles;
$cust = get_post_custom($post->ID);
$ure_roles = $cust["ure_content_for_roles"][0];
$ure_flag = $cust["ure_prohibit_allow_flag"][0];
$ure_display = false;
$permchk = 0;
foreach ($get_roles as $value) {
if (strpos($ure_roles, $value) !== false) {
$permchk = 1;
break;
}
}
if ($permchk == 1 && $ure_flag == 2) {
$ure_display = true;
}
return $ure_display;
}
add_action('the_post', 'custom_post_display_logic');
此函数挂接到“the_post”中,并为每个帖子应用自定义显示逻辑。如果帖子应该显示,它将返回“true”,如果应该根据您的条件隐藏它,它将返回“false”。
评论
0赞
Phantom001
9/19/2023
谢谢!但是,如果它挂钩到帖子本身,它不会阻止在帖子循环中显示帖子(如类别页面),或者我在这里弄错了什么?我尝试实现代码,但遗憾的是没有运气......如果 $ure_display 不为 true,我还尝试清空帖子数组或 wpdie,以防止帖子显示在列表中......可悲的是没有运气。谢谢!
评论
get_post
get_posts