PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 7.9.2
Admin and Site Enhancements (ASE) v7.9.2
9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 8.3.2 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0 8.6.1 8.6.2 8.7.0 5.0.1 5.0.2 5.0.2.1 5.0.2.2 5.0.2.3 5.0.2.4 5.1.0 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.8.0 5.8.1 6.0.0 6.0.3 6.0.4 6.0.5 6.0.5.1 6.0.6 6.0.7 6.0.8.1 6.1.0 6.1.3 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3.0 6.3.1 6.3.2 6.4.0 6.5.0 6.5.1 6.6.0 6.7.0 6.8.0 6.8.2 6.8.3 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13.1 6.9.13.2 6.9.2 6.9.3 6.9.4 6.9.5 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.2 7.0.2.1 7.0.2.2 7.0.2.3 7.0.3 7.1.0 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2.0 7.2.1 7.3.0 7.3.1 7.3.2 7.3.3 7.4.0 7.4.2 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5.0 7.5.1 7.5.2 7.5.3 7.5.4 7.6.0 7.6.1 7.6.1.1 7.6.10 7.6.11 7.6.2 7.6.3 7.6.4 7.6.5 7.6.6 7.6.7 7.6.7.1 7.6.8 7.6.9 7.7.0 7.8.0 7.8.1 7.8.10 7.8.11 7.8.12 7.8.13 7.8.14 7.8.15 7.8.16 7.8.17 7.8.18 7.8.2 7.8.3 7.8.4 7.8.5 7.8.5.1 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1 7.9.10 7.9.11 7.9.2 7.9.3 7.9.4 7.9.5 7.9.6 7.9.7 7.9.8 7.9.9 8.0.0 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.0.6 8.0.7 8.0.8 8.1.0 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.2.0 3.3.0 3.4.0 3.5.0 3.6.1 3.7.0 3.8.0 3.9.0 3.9.1 3.9.2 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.9.0 4.9.1 4.9.2 4.9.3 5.0.0
admin-site-enhancements / classes / class-disable-comments.php
admin-site-enhancements / classes Last commit date
class-activation.php 1 year ago class-admin-menu-organizer.php 1 year ago class-auto-publish-posts-with-missed-schedule.php 1 year ago class-avif-upload.php 1 year ago class-captcha-protection.php 1 year ago class-change-login-url.php 1 year ago class-cleanup-admin-bar.php 1 year ago class-common-methods.php 1 year ago class-content-duplication.php 1 year ago class-content-order.php 1 year ago class-custom-admin-footer-text.php 1 year ago class-custom-body-class.php 1 year ago class-custom-css.php 1 year ago class-custom-nav-menu-items-in-new-tab.php 1 year ago class-deactivation.php 1 year ago class-disable-author-archives.php 1 year ago class-disable-comments.php 1 year ago class-disable-dashboard-widgets.php 1 year ago class-disable-feeds.php 1 year ago class-disable-gutenberg.php 1 year ago class-disable-rest-api.php 1 year ago class-disable-smaller-components.php 1 year ago class-disable-updates.php 1 year ago class-disable-xml-rpc.php 1 year ago class-display-system-summary.php 1 year ago class-email-address-obfuscator.php 1 year ago class-email-delivery.php 1 year ago class-enhance-list-tables.php 1 year ago class-external-permalinks.php 1 year ago class-heartbeat-control.php 1 year ago class-hide-admin-bar.php 1 year ago class-hide-admin-notices.php 1 year ago class-image-sizes-panel.php 1 year ago class-image-upload-control.php 1 year ago class-insert-head-body-footer-code.php 1 year ago class-last-login-column.php 1 year ago class-limit-login-attempts.php 1 year ago class-login-id-type.php 1 year ago class-login-logout-menu.php 1 year ago class-maintenance-mode.php 1 year ago class-manage-ads-appads-txt.php 1 year ago class-manage-robots-txt.php 1 year ago class-media-replacement.php 1 year ago class-multiple-user-roles.php 1 year ago class-obfuscate-author-slugs.php 1 year ago class-open-external-links-in-new-tab.php 1 year ago class-password-protection.php 1 year ago class-redirect-after-login.php 1 year ago class-redirect-after-logout.php 1 year ago class-redirect-fourofour.php 1 year ago class-registration-date-column.php 1 year ago class-revisions-control.php 1 year ago class-search-engines-visibility.php 1 year ago class-settings-fields-render.php 1 year ago class-settings-sanitization.php 1 year ago class-settings-sections-fields.php 1 year ago class-show-custom-taxonomy-filters.php 1 year ago class-site-identity-on-login-page.php 1 year ago class-svg-upload.php 1 year ago class-various-admin-ui-enhancements.php 1 year ago class-view-admin-as-role.php 1 year ago class-wider-admin-menu.php 1 year ago class-wp-config-transformer.php 1 year ago
class-disable-comments.php
214 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 /**
6 * Class for Disable Comments module
7 *
8 * @since 6.9.5
9 */
10 class Disable_Comments {
11 /**
12 * Disable comments for post types
13 *
14 * @since 2.7.0
15 */
16 public function disable_comments_for_post_types_edit() {
17 $options = get_option( ASENHA_SLUG_U );
18 $disable_comments_type = 'only-on';
19 $disable_comments_for = $options['disable_comments_for'];
20 foreach ( $disable_comments_for as $post_type_slug => $is_post_type_checked ) {
21 if ( 'only-on' == $disable_comments_type && $is_post_type_checked || 'except-on' == $disable_comments_type && !$is_post_type_checked || 'all-post-types' == $disable_comments_type ) {
22 remove_post_type_support( $post_type_slug, 'comments' );
23 remove_post_type_support( $post_type_slug, 'trackbacks' );
24 remove_meta_box( 'commentstatusdiv', $post_type_slug, 'normal' );
25 remove_meta_box( 'commentstatusdiv', $post_type_slug, 'side' );
26 remove_meta_box( 'commentsdiv', $post_type_slug, 'normal' );
27 remove_meta_box( 'commentsdiv', $post_type_slug, 'side' );
28 remove_meta_box( 'trackbacksdiv', $post_type_slug, 'normal' );
29 remove_meta_box( 'trackbacksdiv', $post_type_slug, 'side' );
30 // edit-comments.js
31 wp_dequeue_script( 'admin-comments' );
32 }
33 }
34 }
35
36 /**
37 * Hide existing comments from the frontend post
38 *
39 * @since 6.2.1
40 */
41 public function hide_existing_comments_on_frontend() {
42 $options = get_option( ASENHA_SLUG_U );
43 $disable_comments_type = 'only-on';
44 $disable_comments_for = $options['disable_comments_for'];
45 $current_post_type = get_post_type();
46 foreach ( $disable_comments_for as $post_type_slug => $is_post_type_checked ) {
47 if ( 'only-on' == $disable_comments_type && $current_post_type === $post_type_slug && $is_post_type_checked || 'except-on' == $disable_comments_type && $current_post_type === $post_type_slug && !$is_post_type_checked || 'all-post-types' == $disable_comments_type ) {
48 add_filter(
49 'comments_array',
50 '__return_empty_array',
51 10,
52 2
53 );
54 }
55 }
56 }
57
58 /**
59 * Return empty comments array for comment templates
60 *
61 * @since 6.3.1
62 */
63 public function maybe_return_empty_comments( $comments, $post_id ) {
64 $options = get_option( ASENHA_SLUG_U );
65 $disable_comments_type = 'only-on';
66 $disable_comments_for = $options['disable_comments_for'];
67 $post = get_post( $post_id );
68 $current_post_type = $post->post_type;
69 foreach ( $disable_comments_for as $post_type_slug => $is_post_type_checked ) {
70 if ( 'only-on' == $disable_comments_type && $current_post_type === $post_type_slug && $is_post_type_checked || 'except-on' == $disable_comments_type && $current_post_type === $post_type_slug && !$is_post_type_checked || 'all-post-types' == $disable_comments_type ) {
71 return array();
72 } else {
73 return $comments;
74 }
75 }
76 }
77
78 /**
79 * Close commenting on the frontend
80 *
81 * @since 2.7.0
82 */
83 public function close_comments_pings_on_frontend( $comments_pings_open, $post_id ) {
84 // If commenting or pinging is not open, let's keep it that way
85 if ( !$comments_pings_open ) {
86 return $comments_pings_open;
87 }
88 // Commenting or pinging is open for the post ID, let's decide if we should close it
89 $options = get_option( ASENHA_SLUG_U );
90 $disable_comments_type = 'only-on';
91 $disable_comments_for = $options['disable_comments_for'];
92 $post = get_post( $post_id );
93 $current_post_type = $post->post_type;
94 foreach ( $disable_comments_for as $post_type_slug => $is_post_type_checked ) {
95 if ( 'only-on' == $disable_comments_type && $current_post_type === $post_type_slug && $is_post_type_checked || 'except-on' == $disable_comments_type && $current_post_type === $post_type_slug && !$is_post_type_checked || 'all-post-types' == $disable_comments_type ) {
96 return false;
97 }
98 }
99 return $comments_pings_open;
100 }
101
102 /**
103 * Always return zero for comments count on a post where the post type has commenting disabled
104 *
105 * @since 6.2.7
106 */
107 public function return_zero_comments_count( $comments_number, $post_id ) {
108 $options = get_option( ASENHA_SLUG_U );
109 $disable_comments_type = 'only-on';
110 $disable_comments_for = $options['disable_comments_for'];
111 $post = get_post( $post_id );
112 if ( is_object( $post ) && property_exists( $post, 'post_type' ) ) {
113 $current_post_type = $post->post_type;
114 foreach ( $disable_comments_for as $post_type_slug => $is_post_type_checked ) {
115 if ( 'only-on' == $disable_comments_type && $current_post_type === $post_type_slug && $is_post_type_checked || 'except-on' == $disable_comments_type && $current_post_type === $post_type_slug && !$is_post_type_checked || 'all-post-types' == $disable_comments_type ) {
116 return 0;
117 }
118 }
119 }
120 return $comments_number;
121 }
122
123 /**
124 * Disable commenting via XML-RPC
125 *
126 * @link https://plugins.trac.wordpress.org/browser/disable-comments/tags/2.4.5/disable-comments.php
127 * @since 6.3.1
128 */
129 public function disable_xmlrpc_comments( $methods ) {
130 unset($methods['wp.newComment']);
131 return $methods;
132 }
133
134 /**
135 * Disables comments endpoint in REST API
136 *
137 * @link https://plugins.trac.wordpress.org/browser/disable-comments/tags/2.4.5/disable-comments.php
138 * @since 6.3.1
139 */
140 public function disable_rest_api_comments_endpoints( $endpoints ) {
141 if ( isset( $endpoints['comments'] ) ) {
142 unset($endpoints['comments']);
143 }
144 if ( isset( $endpoints['/wp/v2/comments'] ) ) {
145 unset($endpoints['/wp/v2/comments']);
146 }
147 if ( isset( $endpoints['/wp/v2/comments/(?P<id>[\\d]+)'] ) ) {
148 unset($endpoints['/wp/v2/comments/(?P<id>[\\d]+)']);
149 }
150 return $endpoints;
151 }
152
153 /**
154 * Return blank comment before inserting to DB
155 *
156 * @link https://plugins.trac.wordpress.org/browser/disable-comments/tags/2.4.5/disable-comments.php
157 * @since 6.3.1
158 */
159 public function return_blank_comment( $prepared_comment, $request ) {
160 return;
161 }
162
163 /**
164 * Show blank template on singular views when comment is disabled
165 *
166 * @since 4.9.2
167 */
168 public function show_blank_comment_template() {
169 $options = get_option( ASENHA_SLUG_U );
170 $disable_comments_type = 'only-on';
171 $disable_comments_for = $options['disable_comments_for'];
172 $current_post_type = get_post_type();
173 foreach ( $disable_comments_for as $post_type_slug => $is_post_type_checked ) {
174 if ( 'only-on' == $disable_comments_type && $current_post_type === $post_type_slug && $is_post_type_checked || 'except-on' == $disable_comments_type && $current_post_type === $post_type_slug && !$is_post_type_checked || 'all-post-types' == $disable_comments_type ) {
175 if ( is_singular() ) {
176 add_filter( 'comments_template', [$this, 'load_blank_comment_template'], 20 );
177 }
178 }
179 }
180 }
181
182 /**
183 * Load the actual blank comment template
184 *
185 * @since 4.9.2
186 */
187 public function load_blank_comment_template() {
188 return ASENHA_PATH . 'includes/blank-comment-template.php';
189 }
190
191 /**
192 * Check if commenting is disabled for the post type
193 *
194 * @since 7.8.8
195 */
196 public function is_commenting_disabled_for_post_type( $post_type ) {
197 $options = get_option( ASENHA_SLUG_U, array() );
198 $comment_is_disabled_for_post_type = false;
199 if ( array_key_exists( 'disable_comments', $options ) && $options['disable_comments'] ) {
200 if ( array_key_exists( 'disable_comments_for', $options ) && !empty( $options['disable_comments_for'] ) ) {
201 $disable_comments_for = $options['disable_comments_for'];
202 $common_methods = new Common_Methods();
203 $disable_comments_for = $common_methods->get_array_of_keys_with_true_value( $disable_comments_for );
204 $disable_comments_type = 'only-on';
205 if ( 'only-on' == $disable_comments_type && in_array( $post_type, $disable_comments_for ) || 'except-on' == $disable_comments_type && !in_array( $post_type, $disable_comments_for ) || 'all-post-types' == $disable_comments_type ) {
206 $comment_is_disabled_for_post_type = true;
207 }
208 }
209 }
210 return $comment_is_disabled_for_post_type;
211 }
212
213 }
214