<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[BuddyPress][13333] branches/10.0/src/bp-core: Avoid querying for comments when viewing a BuddyPress page in TT3</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://buddypress.trac.wordpress.org/changeset/13333">13333</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://buddypress.trac.wordpress.org/changeset/13333","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>imath</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2022-09-30 20:22:16 +0000 (Fri, 30 Sep 2022)</dd>
</dl>
<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Avoid querying for comments when viewing a BuddyPress page in TT3
The Twenty Twenty-Three block theme is using the `core/comments` block to
display comments for WP Pages or Posts. After checking if comments are
open, this block is doing an additional comment count query which wrongly
returns the site's all comment count as BuddyPress pages ID is reset to
`0`.
In this case forcing comments to be closed is not enough, we also need to
force the comment count to be 0.
Fixes <a href="http://buddypress.trac.wordpress.org/ticket/8744">#8744</a> (branch 10.0)</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#branches100srcbpcorebpcorefiltersphp">branches/10.0/src/bp-core/bp-core-filters.php</a></li>
<li><a href="#branches100srcbpcorebpcorethemecompatibilityphp">branches/10.0/src/bp-core/bp-core-theme-compatibility.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="branches100srcbpcorebpcorefiltersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/10.0/src/bp-core/bp-core-filters.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/10.0/src/bp-core/bp-core-filters.php 2022-09-30 20:04:47 UTC (rev 13332)
+++ branches/10.0/src/bp-core/bp-core-filters.php 2022-09-30 20:22:16 UTC (rev 13333)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -78,6 +78,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> // Turn comments off for BuddyPress pages.
</span><span class="cx" style="display: block; padding: 0 10px"> add_filter( 'comments_open', 'bp_comments_open', 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px">
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+// Force comments count to be 0 or comments list to be an empty array.
+add_filter( 'comments_pre_query', 'bp_comments_pre_query', 10, 2 );
+
</ins><span class="cx" style="display: block; padding: 0 10px"> // Prevent DB query for WP's main loop.
</span><span class="cx" style="display: block; padding: 0 10px"> add_filter( 'posts_pre_query', 'bp_core_filter_wp_query', 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px">
</span></span></pre></div>
<a id="branches100srcbpcorebpcorethemecompatibilityphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: branches/10.0/src/bp-core/bp-core-theme-compatibility.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- branches/10.0/src/bp-core/bp-core-theme-compatibility.php 2022-09-30 20:04:47 UTC (rev 13332)
+++ branches/10.0/src/bp-core/bp-core-theme-compatibility.php 2022-09-30 20:22:16 UTC (rev 13333)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -936,6 +936,31 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Avoid potential extra comment query on BuddyPress pages.
+ *
+ * @since 10.5.0
+ *
+ * @param array|int|null $comment_data The comments list, the comment count or null.
+ * @param WP_Comment_Query $wp_comment_query The WP_Comment_Query instance.
+ * @return array|int|null Null to leave WordPress deal with the comment query, an empty array or 0 to shortcircuit it.
+ */
+function bp_comments_pre_query( $comment_data, $wp_comment_query ) {
+ $is_post_null = isset( $wp_comment_query->query_vars['post_id'] ) && 0 === (int) $wp_comment_query->query_vars['post_id'];
+
+ if ( ! is_buddypress() || ! $is_post_null ) {
+ return $comment_data;
+ }
+
+ if ( isset( $wp_comment_query->query_vars['count'] ) && $wp_comment_query->query_vars['count'] ) {
+ $comment_data = 0;
+ } else {
+ $comment_data = array();
+ }
+
+ return $comment_data;
+}
+
+/**
</ins><span class="cx" style="display: block; padding: 0 10px"> * Do not allow {@link comments_template()} to render during theme compatibility.
</span><span class="cx" style="display: block; padding: 0 10px"> *
</span><span class="cx" style="display: block; padding: 0 10px"> * When theme compatibility sets the 'is_page' flag to true via
</span></span></pre>
</div>
</div>
</body>
</html>