WordPress函数在每个get_post循环中注入php代码,以决定是否显示post

eimct9ow  于 2023-10-17  发布在  WordPress
关注(0)|答案(1)|浏览(121)

我写了一个简单的php代码,它检查用户角色和帖子自定义字段,以决定帖子是否显示在列表中。
如果我在一个手动的post循环中编写代码,并在post结构周围创建一个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;
}
?>

我希望有人能帮我举个例子。
非常感谢!

scyqe7ek

scyqe7ek1#

要在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'。

相关问题