Suponiendo que los autores de sus comentarios están destinados a ser usuarios registrados, la forma más fácil es usar un enlace de pre_get_comments
acción para modificar la WP_Comment_Query
variable de user_id
consulta del objeto , de modo que la consulta solo devuelva comentarios del usuario actual:
function wpse262203_restrict_comment_views( $comments_query ) {
// Don't interfere with comment results in the dashboard
if( is_admin() )
return;
$current_user = wp_get_current_user(); // Get the current user
if( $current_user instanceof WP_User && is_user_logged_in() ) {
// The visitor is logged in as a WordPress user...
// If they're an administrator, don't filter the comments
if( in_array( 'administrator', $current_user->roles ) )
return;
// Otherwise, restrict queried comments to those authored by this user.
$comments_query->query_vars[ 'user_id' ] = $current_user->ID;
}
else {
// The visitor isn't logged in - make sure no comments are queried.
$comments_query->query_vars[ 'comment__in' ] = array(0);
}
}
add_action( 'pre_get_comments', 'wpse262203_restrict_comment_views' );
También puede usar en current_user_can()
lugar de / además de verificar los roles de los usuarios para adaptar para quién se filtran los comentarios.
Si bien también puede admitir comentarios anónimos al usarlos wp_get_current_commenter()
junto con el author_email
WP_Comment_Query
argumento, esto no es terriblemente confiable ni seguro. Los datos de ID de comentarista anónimo se almacenan en cookies, lo que significa que el usuario puede borrarlos o las cookies podrían caducar, en cuyo caso el usuario no podrá ver sus comentarios hasta que publiquen otro. Las credenciales también se falsifican con bastante facilidad: los visitantes astutos podrían obtener acceso a los comentarios de otros usuarios.
EDITAR - Por qué esto no estaba funcionando, anteriormente
Después de una investigación más exhaustiva, mis intentos anteriores de usar WP_Comment_Query::set()
para cambiar las variables de consulta fallaban porque, como resultado, en WP_Comment_Query
realidad no tiene un set()
método, a diferencia de su WP_Query
contraparte (vea el ticket # 39120 ). Sin embargo, tiene un __call()
"Método Mágico" , que estaba interceptando la llamada al set()
método inexistente y devolviendo falso, evitando así el error que PHP normalmente habría arrojado y confundiéndome sin fin.
functions.php
archivo de su tema , sin embargo, si un tercero creó el tema, los cambios podrían sobrescribirse cuando el tema se actualice. El mejor lugar para colocar esto es en un nuevo complemento: siga la sección "Introducción" del Manual de desarrollo de complementos (solo la parte superior de la página) para crear un nuevo archivo de complemento, luego pegue la solución en mi respuesta debajo de información del encabezadofunctions.php
ahora (aunque, para ser sincero, en realidad no lo he probado Oo). ¡Déjame saber como va!