Если оба эти условия не выполняются:
if ($_SESSION['user']['role'] == "Admin") {
$sql = "SELECT * FROM posts";
} elseif ($_SESSION['user']['role'] == "Author") {
$user_id = $_SESSION['user']['id'];
$sql = "SELECT * FROM posts WHERE user_id=$user_id";
}
$result = mysqli_query($conn, $sql);
Тогда переменная $sql
не определена.Если вам нужно иметь их таким образом, то вы можете проверить, установлено ли оно, и вернуть значение по умолчанию.
if ($_SESSION['user']['role'] == "Admin") {
$sql = "SELECT * FROM posts";
} elseif ($_SESSION['user']['role'] == "Author") {
$user_id = $_SESSION['user']['id'];
$sql = "SELECT * FROM posts WHERE user_id=$user_id";
}
if(!isset($sql)) return false; //or [] if you want the type to stay an array.
$result = mysqli_query($conn, $sql);
или что-то подобное, в зависимости от ваших потребностей.
Вы также можетевернуть ошибку:
}else{
return new WP_Error( 'restricted', __( "Not an Admin or Author", "my_textdomain" ) );
}
https://codex.wordpress.org/Class_Reference/WP_Error
По сути это $_SESSION['user']['role']
не является ни Admin
, ни Author
.Следует отметить, что совпадения строк чувствительны к регистру.