Skip to content

Conversation

@jdevalk
Copy link
Member

@jdevalk jdevalk commented Sep 30, 2025

Summary

This PR can be summarized in the following changelog entry:

  • Adds a first few AIOSEO recommendations.

Relevant technical choices:

  • Built with Claude, so please review well.

To test, install AIOSEO alongside this plugin.

jdevalk and others added 8 commits September 30, 2025 19:36
Implements AIOSEO equivalents for Yoast SEO recommendations #1-#8:

- Archive Author: Disable author archives for single-author sites
- Archive Date: Disable date archives when not used in permalinks
- Archive Format: Disable format archives for sites with few formatted posts
- Media Pages: Redirect media/attachment pages to parent posts
- Crawl Settings Emoji Scripts: Enable crawl cleanup optimization
- Crawl Settings Feed Authors: Disable author RSS feeds for single-author sites
- Crawl Settings Feed Global Comments: Disable global comment RSS feeds
- Organization Logo: Set organization or person logo for schema markup

All providers follow the same pattern as Yoast integration and include proper
condition checking using AIOSEO's options API. The integration automatically
detects if All in One SEO is active via the aioseo() function.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Sculptor <sculptor@imbue.com>
Simplified the check for author archives being disabled to use empty()
which properly catches false, 0, '0', and null values. This ensures
the task completes correctly when the user toggles the setting.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Sculptor <sculptor@imbue.com>
Changed from strict comparison to loose comparison (! $show_value) to
properly detect when the setting is false. This handles any type
variations in how AIOSEO returns the value from its options API.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Sculptor <sculptor@imbue.com>
Applied the same loose comparison fix as author archives. Uses
! $show_value instead of strict comparison to properly detect when
date archives are disabled in AIOSEO settings.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Sculptor <sculptor@imbue.com>
AIOSEO doesn't have a specific setting for post format archives like
Yoast does. Removed the Archive_Format provider and its registration
since this recommendation is not applicable to AIOSEO.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Sculptor <sculptor@imbue.com>
Corrected the option path to searchAppearance->postTypes->attachment->redirectAttachmentUrls
and updated task to specifically recommend 'attachment' redirect option. Task now
completes properly when user sets redirect to 'attachment'.

Updated title to be more specific about recommending attachment redirect.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Sculptor <sculptor@imbue.com>
The redirectAttachmentUrls setting is stored in aioseo_options_dynamic,
not the regular options. Updated to use aioseo()->dynamicOptions instead
of aioseo()->options to properly access the attachment redirect setting.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Sculptor <sculptor@imbue.com>
@jdevalk jdevalk changed the title Jdv/aioseo integration AIOSEO integration Sep 30, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Sep 30, 2025

Test on Playground
Test this pull request on the Playground
or download the zip

@aristath
Copy link
Member

aristath commented Oct 1, 2025

Did a first pass this morning, and at first glance it looks OK!
The code is clean, consistent and reasonable. I just pushed a commit to fix some CS & PHPStan reports, but other than that it looks good!
I especially liked the fact that it reused the collectors that were initially built for Yoast SEO
A couple of tasks I checked worked as expected, but we need to do a more thorough review of all tasks - cc @ilicfilip

@ilicfilip
Copy link
Collaborator

The code looks good to me, I tried to break it but without success.

I have updated action links where possible, so after the AIOSEO page is opened user is scrolled to the section which has the option that has to be changed (I used the same URL parameters they use for scrolling and highlighting sections, so nothing custom is added).

Remove post authors feeds and Disable global comment RSS feeds are bit confusing to change (at least for me), since this is the page user gets:

Screenshot 2025-10-01 at 10 13 08

And the options are actually inside the "Crawl Cleanup" section - so maybe we can change them to interactive tasks?

I have also updated the Changelog, but that obviously needs to be checked once more when we create the external pages.

@jdevalk
Copy link
Member Author

jdevalk commented Oct 1, 2025

Yeah an interactive task might be better, could you whip something up for that?

@ilicfilip
Copy link
Collaborator

@jdevalk , I have done it for Author and Global comments RSS feed tasks.

To do it for the other as well (as far I can see Organization logo is the only one which actually require user to visit their page)?

@jdevalk
Copy link
Member Author

jdevalk commented Oct 1, 2025

Yeah i think that's better!

We might have to add a bit of text about why we suggest these things in the popup. Let me give you those:

For comment feeds (where we disable just the global one now but we should actually disable postComments too):

We suggest disabling both the global "recent comments feed" from your site as well as the "comments feed" per post that WordPress generates. These feeds are rarely used by real users, but get crawled a lot. They don't have any interesting information for crawlers, so removing them leads to less bot-traffic on your site without downsides.

For author feeds:

The author feed on your site will be similar to your main feed if you have only one author, so there's no reason to have it.

For media pages:

WordPress creates a "page" for every image you upload. These don't add any value but do cause more crawling on your site, so we suggest removing those.

@jdevalk
Copy link
Member Author

jdevalk commented Oct 1, 2025

And I forgot two:

Author archives:

Your author archives are the same as your normal archives because you have only one author, so there's no reason for search engines to index these. That's why we suggest keeping them out of search results.

Date archives:

Date archives rarely add any real value for users or search engines, so there's no reason for search engines to index these. That's why we suggest keeping them out of search results.

@ilicfilip
Copy link
Collaborator

All done!

I have also update the ID (and everything relared) for the Feed comments task, since now it is for both global and post comments, from aioseo-crawl-settings-feed-global-comments to aioseo-crawl-settings-feed-comments

@aristath aristath added this to the 1.9.0 milestone Oct 20, 2025
@aristath aristath merged commit f39369e into develop Oct 21, 2025
28 checks passed
@aristath aristath deleted the jdv/aioseo-integration branch October 21, 2025 11:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants