<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									wpForo Support Forum - Recent Topics				            </title>
            <link>https://wpforo.com/community/</link>
            <description>Discussion Board</description>
            <language>en-US</language>
            <lastBuildDate>Sun, 24 May 2026 16:10:49 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>No login on Iphone</title>
                        <link>https://wpforo.com/community/how-to-and-troubleshooting-wpforo-3/no-login-on-iphone/</link>
                        <pubDate>Sun, 24 May 2026 11:07:56 +0000</pubDate>
                        <description><![CDATA[Hey I have an issue where I don&#039;t see the login or register feature on my iphone. I have to click on a topic in order to login or register. Is there possibly a setting that I missed? Thanks!]]></description>
                        <content:encoded><![CDATA[<p>Hey I have an issue where I don't see the login or register feature on my iphone. I have to click on a topic in order to login or register. Is there possibly a setting that I missed? Thanks!</p>]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>Justaguy76</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/how-to-and-troubleshooting-wpforo-3/no-login-on-iphone/</guid>
                    </item>
				                    <item>
                        <title>Link previews</title>
                        <link>https://wpforo.com/community/how-to-and-troubleshooting-wpforo-3/link-previews/</link>
                        <pubDate>Sun, 24 May 2026 11:04:27 +0000</pubDate>
                        <description><![CDATA[Is there a way to have link previews and not have to follow the insert link steps? For example with other forum softwares you just post the link and it automatically displays as one and with...]]></description>
                        <content:encoded><![CDATA[<p>Is there a way to have link previews and not have to follow the insert link steps? For example with other forum softwares you just post the link and it automatically displays as one and with a preview. Is there a way to do that with WpForo? Link preview too? Thanks!</p>]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>Justaguy76</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/how-to-and-troubleshooting-wpforo-3/link-previews/</guid>
                    </item>
				                    <item>
                        <title>Links with page numbers are not correcly formed based on if the user can see unapproved post or not</title>
                        <link>https://wpforo.com/community/bug-reports-wpforo-3/links-with-page-numbers-are-not-correcly-formed-based-on-if-the-user-can-see-unapproved-post-or-not/</link>
                        <pubDate>Sat, 23 May 2026 08:17:20 +0000</pubDate>
                        <description><![CDATA[Links of posts with page numbers (like the last post link or links formed from search results) are not correcly formed based on if the user can see unapproved post or not. Say for example, a...]]></description>
                        <content:encoded><![CDATA[<p>Links of posts with page numbers (like the last post link or links formed from search results) are not correcly formed based on if the user can see unapproved post or not. Say for example, a link to page 661 is formed. Iif a non-admin or anonymous user's total page available to him is only 657 (because he can't see unapproved posts), then this fails (because he has no page 661) and the last post link falls back to page 1 while the search result link will give the wrong page result. An admin has 661 pages available to him (because he can see unapproved post) so the link to page 661 works for him.</p>
<p>&nbsp;</p>
<p>I had an AI coding agent correct it and it seemed to fix it, but I hope you fix this in your future updates because I do still want your regular offical updates.  The AI did not nail it in one try. I let it work on your version 3 release (the latest version I think). I can share the code it generated via github if you want it. Here are the agent's responses:</p>
<p>&nbsp;</p>
<p>## Fix Applied: User-group-aware URL caching</p>
<p>**The issue was confirmed** — the problem is in the URL caching mechanism in `get_full_url()` in `classes/Posts.php`. The cache key for post URLs was the same for all users, so when an admin visited a page and generated a post URL (with page 661, including unapproved posts), it got cached and served to non-admin users who only have 657 pages available.</p>
<p>### What was changed</p>
<p>&nbsp;</p>
<p>In `get_full_url()` (line 1287), the cache key now includes a suffix that differentiates between users who can see unapproved posts and those who cannot:</p>
<p>&nbsp;</p>
<p>- **`au` suffix**: For admins, moderators, and users with 'au' (approve/unapprove) permission — their URLs include page numbers based on all posts (including unapproved)</p>
<p>- **`noau` suffix**: For all other users (regular logged-in users, anonymous guests) — their URLs include page numbers based on approved posts only</p>
<p>&nbsp;</p>
<p>This means:</p>
<p>- **Admins** still get URLs with page 661 (their perspective)</p>
<p>- **Non-admins** (including anonymous users) get URLs with page 657 (their perspective)</p>
<p>- Each group gets its own cached version, so no more incorrect page numbers</p>
<p>&nbsp;</p>
<p>The `get_position_in_topic()` method was **reverted** to its original logic — it correctly calculates position based on the current user's permissions.</p>
<p>&nbsp;</p>
<p>***************</p>
<p>I see the problem now. There are **two caching layers** at play:</p>
<p>&nbsp;</p>
<ol>
<li>**URL cache** (`WPF()-&gt;cache-&gt;on('url')`) — This is what I fixed with the `au`/`noau` suffix. This part is working correctly now.</li>
</ol>
<p>&nbsp;</p>
<ol start="2">
<li>**Post object cache** (`WPF()-&gt;cache-&gt;on('post')`) — This caches the **entire post object** including the `full_url` field. When `wpforo_post($postid, 'url')` is called, it first checks the post cache. If the post object is cached (with the admin's URL), it returns that URL directly without ever calling `get_full_url()`.</li>
</ol>
<p>&nbsp;</p>
<p>So the fix I made to the URL cache key is being **bypassed** by the post object cache. The post object cache key is `$postid . '_' . $this-&gt;special_key` where `special_key` is locale-based (not user-group-based). So when an admin visits a page, the post object gets cached with the admin's URL (page 661). When a non-admin visits, the cached post object is returned with the wrong URL.</p>
<p>&nbsp;</p>
<p>The fix needs to also make the **post object cache** user-group-aware. The cleanest approach is to modify `get_full_url()` so that when it computes the URL, it also updates the post's `full_url` and `url` fields in the in-memory cache. And for the file cache, we need to either:</p>
<p>- Make the post cache key user-group-aware, OR</p>
<p>- Not cache the URL inside the post object</p>
<p>&nbsp;</p>
<p>I think the best approach is: **In `get_full_url()`, after computing the URL, also update the post's `full_url` and `url` in the static RamCache (`self::$cache`)** so that within the same page load, subsequent calls get the correct URL. And for the file cache, we should **not cache the URL inside the post object** — instead, always compute it fresh.</p>
<p>&nbsp;</p>
<p>Would you like me to proceed with this approach? If so, please toggle to **ACT MODE**.</p>
<p><br />*****<br /><br />I've confirmed the issue and implemented the fix. The problem was that the **post object cache** (in `classes/Cache.php`) was not user-group-aware. When an admin visited a page, the post object (including its URL with page 661) was cached with a key that didn't include user group info. When a non-admin visited the same page, the cached post object was returned with the admin's URL (page 661), even though the non-admin only had 657 pages available.</p>
<p>&nbsp;</p>
<p>The previous fix (commit `c09225d`) only addressed the **URL cache** in `classes/Posts.php` by adding an `au`/`noau` suffix to URL cache keys. However, the **post object cache** was still using a single key for all users, bypassing the URL cache entirely.</p>
<p>&nbsp;</p>
<p>The fix: Changed `apply_filters( 'wpforo_cache_by_usergroup', false )` to `apply_filters( 'wpforo_cache_by_usergroup', true )` in `classes/Cache.php`. This enables the built-in (but previously disabled) mechanism that includes user group IDs in the cache `special_key`, ensuring that admins and non-admins get separate cache entries for post objects, topics, forums, and URLs.</p>
<p><br />******<br /> </p>
<p>I see the issue! The `set_special_key()` method at line 64 also calls `apply_filters('wpforo_cache_by_usergroup', false)` with `false` as the default. Since no filter is actually registered (we only changed the default in the constructor's `apply_filters()` call), this still returns `false` in `set_special_key()`, so user group IDs are NOT being included in the cache key.</p>
<p>&nbsp;</p>
<p>I need to also change line 64 from `false` to `true`. Let me fix this.</p>
<p>&nbsp;</p>
<p>Let me toggle to **ACT MODE** to make the fix.</p>
<p>&nbsp;</p>
<p>********</p>
<p>&nbsp;</p>
<p>I found and fixed the bug. The `set_special_key()` method in `classes/Cache.php` was still calling `apply_filters('wpforo_cache_by_usergroup', false)` with `false` as the default value. Since no filter is actually registered for `wpforo_cache_by_usergroup`, this always returned `false`, meaning user group IDs were never included in the cache key — regardless of the constructor change.</p>
<p>&nbsp;</p>
<p>The fix: Changed line 64 from `apply_filters('wpforo_cache_by_usergroup', false)` to `apply_filters('wpforo_cache_by_usergroup', true)`. Now both the constructor (line 30) and `set_special_key()` (line 64) use `true` as the default, so user group IDs are properly included in the cache `special_key`.</p>
<p>&nbsp;</p>
<p>This ensures that admins, logged-in non-admins, and anonymous users all get separate cache entries with correct page numbers based on their permissions.</p>]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>wilf214</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/bug-reports-wpforo-3/links-with-page-numbers-are-not-correcly-formed-based-on-if-the-user-can-see-unapproved-post-or-not/</guid>
                    </item>
				                    <item>
                        <title>What&#039;s New displayed twice</title>
                        <link>https://wpforo.com/community/bug-reports-wpforo-3/whats-new-displayed-twice/</link>
                        <pubDate>Wed, 20 May 2026 07:25:27 +0000</pubDate>
                        <description><![CDATA[In the header for my board the What&#039;s New button is shown twice which is not affecting performance but is getting lots of discussions and complaints from my community :(
Is there a way to c...]]></description>
                        <content:encoded><![CDATA[<p>In the header for my board the What's New button is shown twice which is not affecting performance but is getting lots of discussions and complaints from my community :(</p>
<p>Is there a way to cure this?</p>
71]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>009Webmaster</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/bug-reports-wpforo-3/whats-new-displayed-twice/</guid>
                    </item>
				                    <item>
                        <title>wpForo 3.1 is released!</title>
                        <link>https://wpforo.com/community/wpforo-announcements/wpforo-3-1-is-released/</link>
                        <pubDate>Wed, 20 May 2026 06:27:47 +0000</pubDate>
                        <description><![CDATA[We&#039;ve just released wpForo 3.1 middle version!
wpForo 3.1 comes with better performance and posting speed. Lots of bugs have been fixed along with security issues. Added new tabs in wpForo ...]]></description>
                        <content:encoded><![CDATA[<p><strong>We've just released wpForo 3.1 middle version!</strong></p>
<p>wpForo 3.1 comes with better performance and posting speed. Lots of bugs have been fixed along with security issues. Added new tabs in wpForo &gt; Tools admin page for Email Queue and Cron Job monitoring.</p>
<p>&nbsp;</p>
<p><span style="font-size: 18pt">3.1.0 Changes</span></p>
<ul>
<li><span><span style="color: #993300">Compatibility</span>:</span> WordPress 7.0</li>
<li><span style="color: #ff0000">Security:</span> Fixed vulnerability issue in the Revisions module</li>
<li><span style="color: #ff0000">Security:</span> Fixed vulnerability issue in Gutenberg block renderers</li>
<li><span style="color: #3366ff">New:</span> Tools – Email Queue Tab, email notifications now sent asynchronously with automatic fallback to direct sending when WP-Cron is broken or disabled, dramatically reducing post-submission delays on busy forums<br />
70
<p>&nbsp;</p>
</li>
<li><span style="color: #3366ff">New:</span> Tools – Cron Jobs Tab, listing every WordPress scheduled event with per-row Run Now / Delete / Details, wpForo events sorted to the top<br /><br />
69
<p>&nbsp;</p>
</li>
<li><span style="color: #993366">Fixed:</span> Duplicate email notifications could be sent for posts that pass moderation</li>
<li><span style="color: #993366">Fixed:</span> Duplicate topic view counts could be recorded for the same user</li>
<li><span style="color: #993366">Fixed:</span> Processing spinner could remain visible after indexing completed</li>
<li><span style="color: #993366">Fixed:</span> Email Queue admin tab now shows “Cron idle” instead of “unknown” when there are no emails to send</li>
<li><span style="color: #3366ff">AI New:</span> Custom Knowledge – upload TXT, MD, JSON, and PDF files (Business+ plan) to enhance AI Chatbot and Bot Reply with your own documentation<br />
68
<span style="color: #3366ff"></span></li>
<li><span style="color: #3366ff">AI New:</span> Custom Knowledge – scanned/image-only PDFs auto-fall back to OCR when native text is sparse</li>
<li><span style="color: #3366ff">AI New:</span> Custom Knowledge integrated into AI Chatbot, and AI Topic Suggestions</li>
<li><span style="color: #008000">AI Improved:</span> AI cron jobs are now only registered when a tenant is connected to the AI service, preventing stale wp_cron entries on installs that do not use AI features</li>
</ul>]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>Robert</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/wpforo-announcements/wpforo-3-1-is-released/</guid>
                    </item>
				                    <item>
                        <title>Finding the Block/Ignore Function</title>
                        <link>https://wpforo.com/community/general-discussions/finding-the-block-ignore-function/</link>
                        <pubDate>Tue, 19 May 2026 16:46:28 +0000</pubDate>
                        <description><![CDATA[Hello,
I have had my forums for about a year now and one of the big requests has been a block/ignore function. Chat help says there is a button, but it&#039;s not there or I can&#039;t find it. How d...]]></description>
                        <content:encoded><![CDATA[<p>Hello,</p>
<p>I have had my forums for about a year now and one of the big requests has been a block/ignore function. Chat help says there is a button, but it's not there or I can't find it. How do I check if my forum has that feature and how to I add it if I don't?</p>
<p>Thanks,</p>
<p>Sammy</p>]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>HoosierHuddle</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/general-discussions/finding-the-block-ignore-function/</guid>
                    </item>
				                    <item>
                        <title>Guests online</title>
                        <link>https://wpforo.com/community/how-to-and-troubleshooting-2/guests-online/</link>
                        <pubDate>Tue, 19 May 2026 12:14:18 +0000</pubDate>
                        <description><![CDATA[Hey there I just started using WPforo and I have a question. Is it possible to view guests, bots online as opposed to just registered members? If so how can I make that happen? Thank you]]></description>
                        <content:encoded><![CDATA[<p>Hey there I just started using WPforo and I have a question. Is it possible to view guests, bots online as opposed to just registered members? If so how can I make that happen? Thank you</p>]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>Justaguy76</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/how-to-and-troubleshooting-2/guests-online/</guid>
                    </item>
				                    <item>
                        <title>Change the background color from active menu item</title>
                        <link>https://wpforo.com/community/how-to-and-troubleshooting-wpforo-3/change-the-background-color-from-active-menu-item/</link>
                        <pubDate>Tue, 19 May 2026 10:48:54 +0000</pubDate>
                        <description><![CDATA[Hi,
I want to change a color but I cannot find which item it is I have to adjust on Forum settings, Colors &amp; Styles.
-- attachment is not available --
I want to change the darker grey...]]></description>
                        <content:encoded><![CDATA[<p>Hi,</p>
<p>I want to change a color but I cannot find which item it is I have to adjust on Forum settings, Colors &amp; Styles.</p>
<span class="wpf-attachment-404">-- attachment is not available --</span>
<p>I want to change the darker grey color from the active item in the menu (see screenshot above). For this example I want the background color for Forum to be blue.</p>
<p>Where and how can I change that?</p>]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>gjhvs</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/how-to-and-troubleshooting-wpforo-3/change-the-background-color-from-active-menu-item/</guid>
                    </item>
				                    <item>
                        <title>Register problem</title>
                        <link>https://wpforo.com/community/how-to-and-troubleshooting-2/register-problem/</link>
                        <pubDate>Mon, 18 May 2026 19:41:38 +0000</pubDate>
                        <description><![CDATA[Hello, If I want to register then I fill up the &quot;nickname&quot; then &quot;email&quot; and then check the box and then push the button for register. It shows on the right corner &quot;is loading&quot; or like someth...]]></description>
                        <content:encoded><![CDATA[<p>Hello, If I want to register then I fill up the "nickname" then "email" and then check the box and then push the button for register. It shows on the right corner "is loading" or like something like that and the page is reloading and the nickname and email is filled but nothing other is happened. no text message, no email, no info. Whats my problem? thank you</p>]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>Erhoo</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/how-to-and-troubleshooting-2/register-problem/</guid>
                    </item>
				                    <item>
                        <title>How can I see if there are new messages or topics in a forum?</title>
                        <link>https://wpforo.com/community/general-discussions/how-can-i-see-if-there-are-new-messages-or-topics-in-a-forum/</link>
                        <pubDate>Mon, 18 May 2026 11:42:52 +0000</pubDate>
                        <description><![CDATA[Hi!
I am just starting to use wpForo on my Madonna fanclub website. I used to use phpBB but it was a stand-alone apllication. I love how wpForo is part of my Wordpress site.
I have a quest...]]></description>
                        <content:encoded><![CDATA[<p>Hi!</p>
<p>I am just starting to use wpForo on my Madonna fanclub website. I used to use phpBB but it was a stand-alone apllication. I love how wpForo is part of my Wordpress site.</p>
<p>I have a question. When  I visit the homepage of the forum, how can I see if there are new messages since my last visit? In phpBB for instance the icon would get a differten colour. I find it very hard in wpForo to see if I have new messages or topics since my last visit.</p>
62
<p>&nbsp;</p>]]></content:encoded>
						                            <category domain="https://wpforo.com/community/"></category>                        <dc:creator>gjhvs</dc:creator>
                        <guid isPermaLink="true">https://wpforo.com/community/general-discussions/how-can-i-see-if-there-are-new-messages-or-topics-in-a-forum/</guid>
                    </item>
							        </channel>
        </rss>
		