Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
400 commits
Select commit Hold shift + click to select a range
9cc2b9d
Add docbloc
pls78 Nov 28, 2025
42d8174
WIP: adopt the new filtering logic
pls78 Nov 28, 2025
b790854
fix post types
thijsoo Dec 1, 2025
be327ba
Make the max amount per page based on the post type.
thijsoo Dec 1, 2025
914114d
Implement a with construction so we don't pass the repo into the buil…
thijsoo Dec 1, 2025
d0411dc
Update feature card text.
thijsoo Dec 2, 2025
d7db46d
Fix cs
pls78 Dec 2, 2025
f23c6fb
Merge pull request #22748 from Yoast/864-add-indexable-fallback-for-t…
pls78 Dec 2, 2025
011d190
Merge remote-tracking branch 'origin/feature/schema_aggregator' into …
pls78 Dec 2, 2025
06a9431
Fix cs
pls78 Dec 2, 2025
072a0b6
Adds filters for the per page count.
thijsoo Dec 2, 2025
a8bd51c
Merge pull request #22771 from Yoast/646-differentiate-pagination-str…
pls78 Dec 2, 2025
eeab1a7
Merge branch 'feature/schema_aggregator' of github.com:Yoast/wordpres…
thijsoo Dec 2, 2025
2224e26
Adds a specific woo cache buster
thijsoo Dec 3, 2025
ec29baa
Merge remote-tracking branch 'origin/feature/schema_aggregator' into …
pls78 Dec 3, 2025
6fc244a
Abstracts some parts of the cache busting
thijsoo Dec 3, 2025
3ff800b
Merge pull request #22763 from Yoast/884-include-yoast-woocommerce-pr…
thijsoo Dec 3, 2025
5aae7db
Add post type to cache layer.
thijsoo Dec 4, 2025
ad4f5d1
Merge branch 'trunk' of github.com:Yoast/wordpress-seo into feature/s…
thijsoo Dec 4, 2025
84ab45a
Add unit tests for Indexable_Count domain object
thijsoo Dec 4, 2025
d3174a9
Add unit tests for Indexable_Count_Collection domain object
thijsoo Dec 4, 2025
999e374
Add unit tests for Page_Controls domain object
thijsoo Dec 4, 2025
30172c7
Add unit tests for Schema_Piece domain object
thijsoo Dec 4, 2025
dae61c0
cs
thijsoo Dec 4, 2025
5fe68cf
Add unit tests for Cache Manager
thijsoo Dec 4, 2025
4279d13
Refactor Cache Manager tests into separate files per method
thijsoo Dec 4, 2025
68b70c5
Add piece-specific conditional filtering
pls78 Dec 4, 2025
d17f058
Add piece-specific properties filtering
pls78 Dec 4, 2025
2b67f09
The default filtering logic
pls78 Dec 4, 2025
cc155ae
Fix bug about missing constructor parameter for Default_Filter class
pls78 Dec 4, 2025
f6b7f71
Remove unused code
pls78 Dec 4, 2025
0174723
Fix cs
pls78 Dec 4, 2025
1a69b0b
Pass a filtering strategy instance instead of a class to get rid of t…
pls78 Dec 4, 2025
6bc0e49
Fix cs
pls78 Dec 5, 2025
5ca74db
Use the Filtered_Map_Loader to allow using WordPress filters to manip…
pls78 Dec 5, 2025
8cbc8a4
Tests for xml manager.
thijsoo Dec 5, 2025
2cdb12b
Fix cs
pls78 Dec 5, 2025
e458ceb
Start of test for command and handlers.
thijsoo Dec 8, 2025
d48b0a7
Change the output format to a streamed JSONL format.
thijsoo Dec 8, 2025
81361b2
CS for command tests
thijsoo Dec 8, 2025
b5f82ac
Remove old mention
thijsoo Dec 8, 2025
0a090d1
Add unit tests for Article_Config class
thijsoo Dec 8, 2025
b93de1f
Add unit tests for Person_Config class
thijsoo Dec 8, 2025
067cdc7
Tiny header change to make it work with current tooling.
thijsoo Dec 9, 2025
200e9fe
Merge pull request #22801 from Yoast/883-output-in-jsonl-instead-of-json
pls78 Dec 9, 2025
b012239
Merge branch 'feature/schema_aggregator' into schema_aggregator/fix-c…
pls78 Dec 9, 2025
121d605
Merge pull request #22786 from Yoast/schema_aggregator/fix-cache
pls78 Dec 9, 2025
d24e94c
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Dec 9, 2025
aa0d481
MAke the Filtered_Map_Loader class follow the Decorator pattern
pls78 Dec 9, 2025
03d6d74
Account for the new JSONL output format
pls78 Dec 9, 2025
ae10fa3
Add unit tests for Schema Aggregator infrastructure classes
thijsoo Dec 10, 2025
6c1d532
Introduce the Schema_Piece_Collection to ensure type-safety
pls78 Dec 10, 2025
4f05255
Use the Schema_Piece_Collection class
pls78 Dec 10, 2025
0223194
Remove the unused Properties_Merger and update the class description
pls78 Dec 10, 2025
e2624da
Use the interface rather than the repository implementation
pls78 Dec 10, 2025
e4dc140
remove unused method
pls78 Dec 10, 2025
4154fb4
Fix cs
pls78 Dec 10, 2025
2c65c52
Add comment to explain the class name choice
pls78 Dec 10, 2025
524624b
Introduce a provider to abstract away the WordPress dependencies
pls78 Dec 10, 2025
a8c93a7
Uses the provider
pls78 Dec 10, 2025
799c5ba
Simplify the class
pls78 Dec 10, 2025
c9551fb
Update comment
pls78 Dec 10, 2025
5dc17c0
Fix cs
pls78 Dec 10, 2025
43293c6
Add filters output validation
pls78 Dec 10, 2025
a26d953
Fix cs
pls78 Dec 10, 2025
3a0b116
Not use DI
thijsoo Dec 10, 2025
dbb0f81
Merge branch 'restrict-schema-elements-to-content-only' of github.com…
thijsoo Dec 10, 2025
91e19f0
Tiny change.
thijsoo Dec 10, 2025
e8c36a0
Merge pull request #22790 from Yoast/restrict-schema-elements-to-cont…
thijsoo Dec 10, 2025
a27618c
Filter the `mainEntityOfPage` property from all schema pieces
pls78 Dec 12, 2025
bc1d763
Merge branch 'trunk' of github.com:Yoast/wordpress-seo into feature/s…
thijsoo Dec 15, 2025
eb6e0ab
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Dec 15, 2025
398835a
Add tests for the Schema_Piece_Collection class
pls78 Dec 15, 2025
6d6d14e
Fix CS
pls78 Dec 15, 2025
598db9e
Add a new Schemamap line to the robots.txt file when the feature is e…
thijsoo Dec 15, 2025
eed9c64
Merge pull request #22787 from Yoast/904-add-unit-tests-for-all-domai…
pls78 Dec 15, 2025
030a024
Add filter to overwrite discovery robots txt
thijsoo Dec 15, 2025
82eaf34
Rename filters
thijsoo Dec 15, 2025
823912f
Add `primaryImageOfPage` to the list of filtered-out properties for e…
pls78 Dec 15, 2025
55255de
When there's no specific filter for the current schema piece, we stil…
pls78 Dec 15, 2025
de2c551
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Dec 15, 2025
1acbdb9
Add additional checks to routes and cache validation to make sure we …
thijsoo Dec 15, 2025
4bb5253
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Dec 16, 2025
0aae8b3
Adapt tests to recent changes
pls78 Dec 16, 2025
fd0d52c
Merge pull request #22803 from Yoast/901-add-unit-tests-for-cli-comma…
pls78 Dec 16, 2025
f935473
Merge pull request #22805 from Yoast/905-add-unit-tests-for-enhanceme…
pls78 Dec 16, 2025
a913615
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Dec 17, 2025
a1de6e6
Fix typo
pls78 Dec 17, 2025
e8855b3
Fix tests
pls78 Dec 17, 2025
83c16d0
Merge pull request #22820 from Yoast/927-schemamap-discovery-mechanism
pls78 Dec 17, 2025
650192e
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Dec 18, 2025
cebfebd
Merge pull request #22821 from Yoast/926-schema-aggregation-functiona…
pls78 Dec 18, 2025
78d0b9d
test: add unit tests for Config and Aggregator_Config infrastructure
thijsoo Dec 18, 2025
208b496
Fix enhancers to work on single schema pieces
pls78 Jan 5, 2026
7fa3988
Add unit tests for the cache integrations.
thijsoo Jan 8, 2026
006f968
Merge pull request #22860 from Yoast/fix-enhancers
thijsoo Jan 8, 2026
7adc352
Merge branch 'trunk' of github.com:Yoast/wordpress-seo into feature/s…
thijsoo Jan 8, 2026
ecf7722
Update ai-tools to add schema aggregator.
thijsoo Jan 8, 2026
b9ac6f0
Add unit tests for Schema Enhancement classes
thijsoo Dec 8, 2025
87fd936
Fix bug in Person_Schema_Enhancer jobTitle check
thijsoo Dec 8, 2025
c3af986
Refactor: Split Concrete_Schema_Enhancer_For_Testing into separate file
thijsoo Dec 8, 2025
f67b94d
Fix code style in Get_Enhancer_Test
thijsoo Dec 8, 2025
413ec4c
Add more unit tests
pls78 Dec 24, 2025
3e04ed1
Fix cs
pls78 Dec 24, 2025
c775d11
Fix cs
pls78 Dec 24, 2025
0b82578
Change method visibility for testing purposes
pls78 Jan 7, 2026
d88c559
Add test double
pls78 Jan 7, 2026
ff4439a
Add tests for Article_Schema_Enhancer
pls78 Jan 7, 2026
fbc7005
Fix wrong visibility
pls78 Jan 8, 2026
1e75a56
Remove useless setup method
pls78 Jan 8, 2026
038a6bb
Fix param annotation
pls78 Jan 8, 2026
ffc4e5f
Fix integration tests
pls78 Jan 8, 2026
f59537c
Fix test
pls78 Jan 8, 2026
355552f
Change visibility to allow testing
pls78 Jan 12, 2026
ee28ed4
Person enhancer test double
pls78 Jan 12, 2026
ce95082
Unit tests for the person piece schema enhancer
pls78 Jan 12, 2026
76aa12d
Fix cs
pls78 Jan 12, 2026
feb9e66
Add EDD and events compatibility for the schema aggregator.
thijsoo Jan 12, 2026
f657c14
Add unit tests for the wordpress global state adapter.
thijsoo Jan 12, 2026
8d3c725
Implement feedbacks
pls78 Jan 13, 2026
3dd7218
Remove unused annotation
pls78 Jan 13, 2026
d3bed96
Merge pull request #22800 from Yoast/899-add-unit-tests-for-schema-en…
thijsoo Jan 14, 2026
c8fa0e9
Add unit test for generate_array_of_size function in Config_Get_Expir…
thijsoo Jan 14, 2026
8361c10
Add test to cover the exception branch
pls78 Jan 14, 2026
042fa10
This shouldn't be needed as serialize() either returns a string or ra…
pls78 Jan 14, 2026
91a8e94
Merge pull request #22831 from Yoast/909-add-unit-test-for-the-config…
pls78 Jan 14, 2026
7bdd8fb
Add cover annotation for private method
pls78 Jan 15, 2026
16d2fc0
Add constructor test
pls78 Jan 15, 2026
3225654
Merge pull request #22870 from Yoast/911-add-unit-tests-for-the-cache…
pls78 Jan 15, 2026
6417386
Merge branch 'trunk' of https://github.com/Yoast/wordpress-seo into f…
pls78 Jan 15, 2026
0b7c7ec
Use $post_id instead of the `get_the_ID()` function.
thijsoo Jan 15, 2026
43d3665
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Jan 15, 2026
76f4497
Add tests to cover the exception case
pls78 Jan 15, 2026
9be9fcf
Fix tests
pls78 Jan 15, 2026
54a7858
Merge pull request #22789 from Yoast/897-add-unit-tests-for-cache-man…
pls78 Jan 15, 2026
53ba084
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Jan 15, 2026
b497caf
Add tests covering exceptions
pls78 Jan 15, 2026
805de43
Merge pull request #22799 from Yoast/898-add-unit-tests-for-xml-cache…
pls78 Jan 15, 2026
99997a5
Abstract external schema piece repos
thijsoo Jan 16, 2026
8b5054d
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Jan 17, 2026
99705ed
Merge branch 'trunk' of https://github.com/Yoast/wordpress-seo into f…
pls78 Jan 19, 2026
473c8ec
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Jan 19, 2026
7831fe3
Merge pull request #22814 from Yoast/910-add-unit-tests-for-the-condi…
pls78 Jan 19, 2026
e958067
Merge branch 'feature/schema_aggregator' of https://github.com/Yoast/…
pls78 Jan 19, 2026
81cb39a
Merge pull request #22879 from Yoast/1005-add-global-post-variables-f…
pls78 Jan 19, 2026
0c2cf6d
Add schema node filters unit tests
pls78 Jan 19, 2026
e61a90f
Ignore private method for code coverage
pls78 Jan 19, 2026
fbb7899
Add the schema-aggregator @group annotation
pls78 Jan 19, 2026
088ecec
Add integration test for xml route
thijsoo Jan 20, 2026
dca2792
Add tests
pls78 Jan 20, 2026
38b15a9
Make the filters remove a property even if its value is null
pls78 Jan 20, 2026
1cd182b
More tests
pls78 Jan 20, 2026
eeddfca
Remove final
pls78 Jan 20, 2026
174ea36
Fix cs
pls78 Jan 20, 2026
1a62f54
Ignore unused code
pls78 Jan 20, 2026
bb7a851
Ignore private method
pls78 Jan 20, 2026
972d4c2
Remove final
pls78 Jan 20, 2026
74441a6
remove final
pls78 Jan 20, 2026
17e9016
Set abstract classes as abstract
pls78 Jan 20, 2026
ebab39d
Fixed some minor issues
pls78 Jan 21, 2026
1850197
Add action and set the option earlier.
thijsoo Jan 21, 2026
8e5296c
CS
thijsoo Jan 21, 2026
7c579bf
Merge pull request #22897 from Yoast/914-add-integration-tests-for-xm…
pls78 Jan 21, 2026
9151404
Rename method and update tests
thijsoo Jan 22, 2026
bfa8c05
Rename method and update tests
thijsoo Jan 22, 2026
3170a7a
Merge pull request #22900 from Yoast/add-filtering-unit-tests
thijsoo Jan 22, 2026
72878c4
Add `Thing` schema piece.
thijsoo Jan 22, 2026
302c704
Add is debug flag for enabeling the version number
thijsoo Jan 27, 2026
d72f95f
Add proper @codeCoverageIgnore annotation
pls78 Jan 27, 2026
1af1935
Add unit tests
pls78 Jan 27, 2026
7ae4fbd
Add integration tests
pls78 Jan 27, 2026
4e43d7d
Fix cs
pls78 Jan 27, 2026
a535384
update @ covers tags
thijsoo Jan 27, 2026
4bee58a
Merge pull request #22906 from Yoast/add-schema-aggregator-debug-vers…
pls78 Jan 27, 2026
5e40c34
Merge pull request #22914 from Yoast/add-repositories-tests
thijsoo Jan 27, 2026
ae28988
Refactor the elements-context map to be a class
pls78 Jan 27, 2026
9fdc039
Fix annotation and test name
pls78 Jan 27, 2026
a0e3878
Merge pull request #22916 from Yoast/refactor-elements-context-map
thijsoo Jan 28, 2026
07ed081
Merge branch 'trunk' of github.com:Yoast/wordpress-seo into feature/s…
thijsoo Jan 28, 2026
871fdc1
The feature thumbnail
pls78 Jan 30, 2026
d88aea5
The introduction integration
pls78 Jan 30, 2026
affdcf1
The introduction content
pls78 Jan 30, 2026
3e90bda
Initialize the introduction
pls78 Jan 30, 2026
3f1d628
Remove deprecated get_name method
pls78 Jan 30, 2026
d51034b
Add unit tests
pls78 Jan 30, 2026
4ea8b5f
Update packages/js/src/introductions/components/modals/schema-aggrega…
pls78 Feb 3, 2026
f171b84
Fix EDD
thijsoo Feb 3, 2026
1c9d341
Move introduction to the schema-aggregator folder structure
pls78 Feb 3, 2026
0fe229e
Move unit test
pls78 Feb 3, 2026
496e8a0
Fix namespaces
pls78 Feb 3, 2026
4833058
Merge pull request #22929 from Yoast/add-introduction-modal
thijsoo Feb 3, 2026
1aba079
Refactor default filter to be able to use a filter on multiple schema…
thijsoo Feb 4, 2026
5a706a4
Fix case where a schema piece would be deleted when one of the types …
thijsoo Feb 4, 2026
72a06a8
More tests
thijsoo Feb 4, 2026
f3ffc8c
Re-instate pieces de-duplication and properties merging logic
pls78 Feb 4, 2026
58581b3
Refactor the global state adapter to discriminate between posts and p…
pls78 Feb 4, 2026
9d60f35
Adapt unit tests
pls78 Feb 4, 2026
546e9f8
Loosen our filtering a bit for website specific nodes to keep the int…
thijsoo Feb 5, 2026
2efda88
Fix cs
pls78 Feb 5, 2026
c223569
Merge pull request #22949 from Yoast/re-instate-entities-deduplication
thijsoo Feb 5, 2026
98e01e0
Make sure to loop through all pieces.
thijsoo Feb 5, 2026
206a3a6
Merge pull request #22948 from Yoast/1052-keep-website-node-since-its…
pls78 Feb 5, 2026
8f34f21
Merge branch 'feature/schema_aggregator' of github.com:Yoast/wordpres…
thijsoo Feb 5, 2026
47eeb0c
Only do a different set for pages.
thijsoo Feb 5, 2026
5189c36
Update tests
pls78 Feb 5, 2026
0433eda
Fix cs
pls78 Feb 5, 2026
b5e075e
Merge pull request #22942 from Yoast/22937-nlweb-error-when-post-has-…
pls78 Feb 5, 2026
c4bcef4
Fix unit tests
pls78 Feb 5, 2026
7e88b83
Add tests
thijsoo Feb 6, 2026
bb313f2
Merge branch 'trunk' of github.com:Yoast/wordpress-seo into feature/s…
thijsoo Feb 6, 2026
0ee0e44
Try to see if headers can be validated.
thijsoo Feb 10, 2026
27d5665
cs
thijsoo Feb 10, 2026
dd862f8
cs
thijsoo Feb 10, 2026
c7667f0
Add unit test and code cover ignore
thijsoo Feb 10, 2026
df0ac09
Add WooCommerce and EDD as dev dependencies
pls78 Feb 11, 2026
7ba7cd6
Fix a bug where pages was never retrieved when indexables were not av…
pls78 Feb 11, 2026
38c8b73
Add tests
pls78 Feb 11, 2026
ad1ea4e
Merge pull request #22962 from Yoast/915-add-integration-tests-for-th…
pls78 Feb 11, 2026
edbfc01
Move cleaning up in the tear_down method
pls78 Feb 11, 2026
a5c9291
Add WooCommerce-specific tear-down
pls78 Feb 11, 2026
7eb13ee
Revert "Move cleaning up in the tear_down method"
pls78 Feb 11, 2026
2c9815f
Merge pull request #22965 from Yoast/add-schema-piece-repositories-in…
thijsoo Feb 12, 2026
662a504
Add missing unit tests
pls78 Feb 12, 2026
df3dc6a
Fix @cover annotations
pls78 Feb 12, 2026
7143dde
Add global indexable alert.
thijsoo Feb 12, 2026
2122457
Merge pull request #22968 from Yoast/add-missing-schema-piece-reposit…
thijsoo Feb 12, 2026
84a86ae
Ignore some methods for code coverage
pls78 Feb 12, 2026
b741d41
Add unit tests
pls78 Feb 12, 2026
a7a1075
Merge pull request #22970 from Yoast/add-miscellaneous-unit-tests
thijsoo Feb 12, 2026
ba92e9a
Merge pull request #22955 from Yoast/900-add-unit-tests-for-the-schem…
pls78 Feb 12, 2026
ace3d54
Merge branch 'trunk' of https://github.com/Yoast/wordpress-seo into f…
pls78 Feb 13, 2026
0926b4c
Merge trunk
pls78 Feb 16, 2026
7ea6adb
Fix cs
pls78 Feb 16, 2026
c977411
Fix cs
pls78 Feb 16, 2026
3a87adb
Fix cs
pls78 Feb 16, 2026
64359d7
Fix cs
pls78 Feb 16, 2026
4ca5515
Merge pull request #22992 from Yoast/fix-cs
pls78 Feb 16, 2026
4f805f7
Do not expose endpoints if the post type is set to noindex
pls78 Feb 16, 2026
fd2236c
Update tests
pls78 Feb 16, 2026
29c255a
Do not retrieve a post if it is set to robots_noindex
pls78 Feb 16, 2026
694bda0
Add integration test
pls78 Feb 16, 2026
bf7f762
Do not open the link in new page
pls78 Feb 16, 2026
9d98f59
Fix cs
pls78 Feb 16, 2026
b0ab78c
Merge pull request #22969 from Yoast/1058-introduce-a-global-notifica…
leonidasmi Feb 17, 2026
d4bcccb
Fix PHPCS
leonidasmi Feb 17, 2026
f85c063
Add the is_robots check to the initial query instead of a php filter.
thijsoo Feb 17, 2026
bd16b5b
Merge pull request #22999 from Yoast/fix/cs-again-for-schema-aggregator
pls78 Feb 17, 2026
f541f06
Merge branch 'feature/schema_aggregator' of github.com:Yoast/wordpres…
thijsoo Feb 17, 2026
3960df3
Merge pull request #22996 from Yoast/exclude-non-indexable-post-types…
thijsoo Feb 17, 2026
145f766
Merge branch 'trunk' into feature/schema_aggregator
pls78 Feb 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions admin/tracking/class-tracking-settings-data.php
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,8 @@ class WPSEO_Tracking_Settings_Data implements WPSEO_Collection {
'enable_llms_txt',
'llms_txt_selection_mode',
'configuration_finished_steps',
'enable_schema_aggregation_endpoint',
'schema_aggregation_endpoint_enabled_on',
'enable_task_list',
'enable_schema',
// No need to add anything from WPSEO_Option_Tracking_Only as they are added automatically below.
Expand Down
6 changes: 5 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
"psr/log": "^1.0",
"symfony/config": "^5.4.46",
"symfony/dependency-injection": "^5.4.48",
"wpackagist-plugin/easy-digital-downloads": "dev-trunk",
"wpackagist-plugin/google-site-kit": "dev-trunk",
"wpackagist-plugin/woocommerce": "dev-trunk",
"yoast/wp-test-utils": "^1.2.1",
"yoast/yoastcs": "^3.3.0"
},
Expand Down Expand Up @@ -86,7 +88,9 @@
"extra": {
"installer-paths": {
"vendor/{$name}": [
"wpackagist-plugin/google-site-kit"
"wpackagist-plugin/easy-digital-downloads",
"wpackagist-plugin/google-site-kit",
"wpackagist-plugin/woocommerce"
]
}
},
Expand Down
44 changes: 42 additions & 2 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions images/icon-schema-aggregation-endpoint.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/schema-aggregator-thumbnail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions inc/options/class-wpseo-option-wpseo.php
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ class WPSEO_Option_Wpseo extends WPSEO_Option {
'default_seo_title' => [],
'default_seo_meta_desc' => [],
'first_activated_by' => 0,
'enable_schema_aggregation_endpoint' => false,
'schema_aggregation_endpoint_enabled_on' => null,
'enable_task_list' => true,
'enable_schema' => true,
];
Expand Down Expand Up @@ -356,6 +358,7 @@ protected function validate_option( $dirty, $clean, $old ) {
case 'site_kit_tracking_setup_widget_temporarily_dismissed':
case 'site_kit_tracking_setup_widget_permanently_dismissed':
case 'ai_free_sparks_started_on':
case 'schema_aggregation_endpoint_enabled_on':
if ( isset( $dirty[ $key ] ) ) {
$clean[ $key ] = sanitize_text_field( $dirty[ $key ] );
}
Expand Down Expand Up @@ -549,6 +552,7 @@ protected function validate_option( $dirty, $clean, $old ) {
* 'site_kit_connected',
* 'google_site_kit_feature_enabled',
* 'enable_llms_txt',
* 'enable_schema_aggregation_endpoint'
* 'enable_task_list',
* 'enable_schema',
* and most of the feature variables.
Expand Down Expand Up @@ -622,6 +626,7 @@ public function verify_features_against_network( $options = [] ) {
'google_site_kit_feature_enabled' => false,
'enable_llms_txt' => false,
'enable_task_list' => false,
'enable_schema_aggregation_endpoint' => false,
'enable_schema' => false,
];

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
import { ArrowNarrowRightIcon } from "@heroicons/react/solid";
import { useSelect } from "@wordpress/data";
import { useMemo } from "@wordpress/element";
import { __, sprintf } from "@wordpress/i18n";
import { Button, useModalContext } from "@yoast/ui-library";
import { safeCreateInterpolateElement } from "../../../helpers/i18n";
import { STORE_NAME_INTRODUCTIONS } from "../../constants";
import { Modal } from "../modal";


/**
* @returns {JSX.Element} The element.
*/

const SchemaAggregatorAnnouncementContent = ( {
thumbnail,
buttonLink,
description,
} ) => {
const { onClose, initialFocus } = useModalContext();

return (
<>
<div className="yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center">
<img
className="yst-w-full yst-h-auto yst-rounded-md yst-shadow-md"
alt="Thumbnail for Yoast SEO Google Docs Add-On"
loading="lazy"
decoding="async"
{ ...thumbnail }
/>
<div className="yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center">
<span className="yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center">
<span className="yst-logo-icon" />
Yoast SEO
</span>
</div>
</div>
<div className="yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center">
<div className="yst-mt-4 yst-text-center">
<h3 className="yst-text-slate-900 yst-text-lg yst-font-medium">
{
__( "New: Prepare your site for AI powered discovery! ✨", "wordpress-seo" )
}
</h3>
<div className="yst-mt-2 yst-text-slate-600 yst-text-sm">
<p>{ description }</p>
</div>
</div>
<div className="yst-w-full yst-flex yst-mt-6">
<Button
as="a"
className="yst-grow"
size="extra-large"
variant="primary"
href={ buttonLink }
ref={ initialFocus }
>
{ __( "Enable Schema aggregation endpoint", "wordpress-seo" ) }
<span className="yst-sr-only">
{
/* translators: Hidden accessibility text. */
__( "(Opens in a new browser tab)", "wordpress-seo" )
}
</span>
</Button>
</div>
<Button
as="a"
className="yst-mt-4"
variant="tertiary"
onClick={ onClose }
>
{ __( "Close", "wordpress-seo" ) }
</Button>
</div>
</>
);
};

/**
* @returns {JSX.Element} The element.
*/
export const SchemaAggregatorAnnouncement = () => {
const imageLink = useSelect( select => select( STORE_NAME_INTRODUCTIONS ).selectImageLink( "schema-aggregator-thumbnail.png" ), [] );
const buttonLink = useSelect( select => select( STORE_NAME_INTRODUCTIONS ).selectLink( "?page=wpseo_page_settings#/site-features#card-wpseo-enable_schema_aggregation_endpoint" ), [] );
const learnMoreLink = useSelect( select => select( STORE_NAME_INTRODUCTIONS ).selectLink( "https://yoa.st/schema-aggregation-activation/" ), [] );

const thumbnail = useMemo( () => ( {
src: imageLink,
width: "432",
height: "243",
} ), [ imageLink ] );

const LearnMoreButton = () => <Button
as="a"
href={ learnMoreLink }
variant="tertiary"
className="yst-p-0 yst-no-underline yst-font-medium yst-inline-flex yst-items-center yst-gap-1"
target="_blank"
rel="noopener"
>
{ __( "Learn more", "wordpress-seo" ) }
<ArrowNarrowRightIcon className="yst-w-3 yst-h-3 yst-flex-shrink-0 rtl:yst-rotate-180" />
<span className="yst-sr-only">
{
/* translators: Hidden accessibility text. */
__( "(Opens in a new browser tab)", "wordpress-seo" )
}
</span>
</Button>;

const description = useMemo( () => safeCreateInterpolateElement(
sprintf(
/**
* translators: %1$s expands to an opening anchor tag; %2$s expands to the arrow icon ; %3$s expands to a closing anchor tag.
*/
__( "Enable the Schema aggregation endpoint to make your Schema readable by AI systems. %1$s", "wordpress-seo" ),
"<LearnMoreButton />"
),
{
LearnMoreButton: <LearnMoreButton />,
}
), [] );

return (
<Modal>
<SchemaAggregatorAnnouncementContent
buttonLink={ buttonLink }
thumbnail={ thumbnail }
description={ description }
/>
</Modal>
);
};
2 changes: 2 additions & 0 deletions packages/js/src/introductions/initialize.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { Introduction, IntroductionProvider } from "./components";
import { AiBrandInsightsPostLaunch } from "./components/modals/ai-brand-insights-post-launch";
import { BlackFridayAnnouncement } from "./components/modals/black-friday-announcement";
import { DelayedPremiumUpsell } from "./components/modals/delayed-premium-upsell";
import { SchemaAggregatorAnnouncement } from "./components/modals/schema-aggregator-announcement";
import { STORE_NAME_INTRODUCTIONS } from "./constants";
import { registerStore } from "./store";

Expand All @@ -25,6 +26,7 @@ domReady( () => {
"ai-brand-insights-post-launch": AiBrandInsightsPostLaunch,
"black-friday-announcement": BlackFridayAnnouncement,
"delayed-premium-upsell": DelayedPremiumUpsell,
"schema-aggregator-announcement": SchemaAggregatorAnnouncement,
};

if ( location.href.indexOf( "page=wpseo_dashboard#/first-time-configuration" ) !== -1 ) {
Expand Down
13 changes: 13 additions & 0 deletions packages/js/src/settings/site-features/ai-tools.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { __ } from "@wordpress/i18n";
import { ReactComponent as AIGeneratorIcon } from "../../../../../images/icon-sparkles.svg";
import { ReactComponent as LlmtxtIcon } from "../../../../../images/icon-llms-txt.svg";
import { ReactComponent as SchemaAggregationIcon } from "../../../../../images/icon-schema-aggregation-endpoint.svg";

export const aiToolsFeatures = {
aiGenerator: {
Expand All @@ -27,4 +28,16 @@ export const aiToolsFeatures = {
learnMoreLinkId: "link-llms-txt",
learnMoreLinkAriaLabel: __( "llms.txt", "wordpress-seo" ),
},
schemaAggregation: {
name: "wpseo.enable_schema_aggregation_endpoint",
id: "card-wpseo-enable_schema_aggregation_endpoint",
inputId: "input-wpseo-enable_schema_aggregation_endpoint",
Icon: SchemaAggregationIcon,
isPremiumFeature: false,
title: __( "Schema aggregation endpoint", "wordpress-seo" ),
description: __( "Provides everything required to connect with your site's public structured data. This enables conversational interfaces like NLWeb to power natural language queries on your content.", "wordpress-seo" ),
learnMoreUrl: "https://yoa.st/site-features-schema-aggregation-endpoint-learn-more",
learnMoreLinkId: "link-schema-aggregation-endpoint",
learnMoreLinkAriaLabel: __( "Schema aggregation endpoint", "wordpress-seo" ),
},
};
Loading