fictioneer/comments.php

117 lines
3.7 KiB
PHP
Raw Normal View History

2023-01-21 01:31:34 +01:00
<?php
/**
* Template Part: Comments
*
* Renders the comment form and threads.
*
* @package WordPress
* @subpackage Fictioneer
* @since 4.7.0
2023-01-21 01:31:34 +01:00
*/
// Don't show the comments if the password has not been entered
2023-08-22 01:00:45 +02:00
if ( post_password_required() ) {
return;
}
2023-01-21 01:31:34 +01:00
2024-04-24 17:17:50 +02:00
global $wp;
2023-01-21 01:31:34 +01:00
// Setup
2023-12-02 00:00:13 +01:00
$post_id = get_the_ID();
2023-01-21 01:31:34 +01:00
$user = wp_get_current_user();
$comments_count = get_comments_number();
$order = fictioneer_sanitize_query_var( $_GET['corder'] ?? 0, ['desc', 'asc'], get_option( 'comment_order' ) );
2023-01-21 01:31:34 +01:00
$logout_url = fictioneer_get_logout_url( get_permalink() );
2024-04-24 17:17:50 +02:00
$order_link = add_query_arg( 'corder', $order === 'desc' ? 'asc' : 'desc', home_url( $wp->request ) ) . '#comments';
$is_ajax_comments = get_option( 'fictioneer_enable_ajax_comments' );
2023-01-21 01:31:34 +01:00
?>
2024-04-24 17:17:50 +02:00
<div id="comments" class="fictioneer-comments scroll-margin-top" data-post-id="<?php echo $post_id; ?>" data-order="<?php echo $order; ?>" data-logout-url="<?php echo esc_url( $logout_url ); ?>" <?php echo $is_ajax_comments ? 'data-ajax-comments' : ''; ?>><?php
if ( get_option( 'fictioneer_enable_ajax_comments' ) ) {
fictioneer_comments_ajax_skeleton( $comments_count ); // AJAX loading skeleton
} else {
// Query arguments
$query_args = array(
'post_id' => $post_id,
'order' => $order
);
if ( ! get_option( 'fictioneer_disable_comment_query' ) ) {
$query_args['type'] = ['comment', 'private', 'user_deleted'];
2023-01-21 01:31:34 +01:00
} else {
2024-04-24 17:17:50 +02:00
$query_args['type'] = ['comment'];
}
2023-01-21 01:31:34 +01:00
2024-04-24 17:17:50 +02:00
// Filter query arguments
$query_args = apply_filters( 'fictioneer_filter_comments_query', $query_args, $post_id );
2023-01-21 01:31:34 +01:00
2024-04-24 17:17:50 +02:00
// Query comments
$comments_query = new WP_Comment_Query( $query_args );
$comments = $comments_query->comments;
2023-01-21 01:31:34 +01:00
2024-04-24 17:17:50 +02:00
// Filter comments
$comments = apply_filters( 'fictioneer_filter_comments', $comments, $post_id );
2023-01-21 01:31:34 +01:00
2024-04-24 17:17:50 +02:00
// Comments header
fictioneer_comment_header( $comments_count );
2023-01-21 01:31:34 +01:00
2024-04-24 17:17:50 +02:00
// Comment form
if ( ! fictioneer_is_commenting_disabled( $post_id ) ) {
if ( get_option( 'fictioneer_enable_ajax_comment_form' ) ) {
fictioneer_comments_ajax_form_skeleton();
2023-01-21 01:31:34 +01:00
} else {
2024-04-24 17:17:50 +02:00
comment_form();
2023-01-21 01:31:34 +01:00
}
2024-04-24 17:17:50 +02:00
} else {
echo '<div class="fictioneer-comments__disabled">' . __( 'Commenting is disabled.', 'fictioneer' ) . '</div>';
}
2023-01-21 01:31:34 +01:00
if ( $comments_count > 0 ) {
2024-04-24 17:17:50 +02:00
// Start HTML ---> ?>
<div id="sof" class="sort-order-filter _comments">
<a class="list-button _order <?php echo $order === 'desc' ? '_on' : '_off'; ?>" href="<?php echo $order_link; ?>" rel='nofollow' aria-label="<?php esc_attr_e( 'Toggle comments between ascending and descending order', 'fictioneer' ); ?>">
<i class="fa-solid fa-arrow-up-short-wide _off"></i><i class="fa-solid fa-arrow-down-wide-short _on"></i>
</a>
</div>
<?php // <--- End HTML
2023-01-21 01:31:34 +01:00
}
2024-04-24 17:17:50 +02:00
// Count all comments regardless of status
$count = count( $comments );
// Comment list
2023-08-22 01:00:45 +02:00
if (
2024-04-24 17:17:50 +02:00
have_comments() ||
( $count > 0 && user_can( $user, 'moderate_comments' ) ) ||
( $count > 0 && ! empty( $_GET['commentcode'] ?? 0 ) )
2023-08-22 01:00:45 +02:00
) {
2024-04-24 17:17:50 +02:00
// Start HTML ---> ?>
<ol class="fictioneer-comments__list commentlist">
<?php wp_list_comments( [], $comments ); ?>
</ol>
<?php // <--- End HTML
// Pagination
$pag_args = [];
if ( ! get_option( 'fictioneer_disable_comment_pagination' ) ) {
$pag_args['prev_text'] = fcntr( 'previous' );
$pag_args['next_text'] = fcntr( 'next' );
}
the_comments_pagination( $pag_args );
2023-08-22 01:00:45 +02:00
}
2024-04-24 17:17:50 +02:00
}
// Edit template
if (
get_option( 'fictioneer_enable_user_comment_editing' ) &&
! fictioneer_is_commenting_disabled()
) {
get_template_part( 'partials/_template_comment_edit' );
}
2023-08-22 01:00:45 +02:00
2024-04-24 17:17:50 +02:00
?></div>