J'ai une page, en dehors de la boucle, qui affiche une pièce jointe contenant des informations de base à son sujet (titre, date de téléchargement, etc.). J'ai l'ID de pièce jointe à ma disposition via un formulaire soumis avant le chargement de la page.
Ce que je dois faire, c'est sécuriser la page en veillant à ce que seuls les utilisateurs qui ont téléchargé ce fichier aient accès à la page contenant ce fichier. Afin de faire cela, j'ai supposé que le moyen le plus simple serait de comparer l'ID de l'utilisateur actuellement connecté et l'ID de l'utilisateur qui a créé la pièce jointe. Mais il ne semble pas y avoir de moyen que je puisse trouver pour obtenir l'identifiant de l'auteur d'une publication en dehors de la boucle en utilisant uniquement l'identifiant de pièce jointe.
Je suis perplexe, comment dois-je faire cela?
De retour dans la journée, j’ai écrit une fonction pour vérifier cela (vous pouvez la mettre dans functions.php et l’appeler depuis votre page):
public function check_if_user_is_author($user_id, $post_id) {
global $wpdb;
$res = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $wpdb->posts ." WHERE ID = %d AND post_author = %d LIMIT 1", $post_id, $user_id));
if(isset($res) && count($res) > 0) {
return $res[0];
} else {
return false;
}
}
En outre, théoriquement, vous pouvez simplement obtenir l'objet de publication et comparer l'ID de l'auteur avec l'ID de l'utilisateur actuellement connecté. Avertissement: le code ci-dessous n'est pas testé.
$current_user_id = get_current_user_id();
$post_data = get_post($your_att_id, ARRAY_A);
$author_id = $post_data['post_author'];
if( $current_user_id == $author_id ) {
// good, current logged-in user is author of attachment
}