“SEO URL request” – No support for WPBakery or JSON-LD schema markup
The support doesn work on Saturdays and Sundays, so some Friday requests can be answered on Monday. If you have problems with registration ask help on contact us page pleaseIf you not got email within 24~36 business hours, firstly check your spam box, and if no any email from the support there - back to the forum and read answer here. DO NOT ANSWER ON EMAILS [noreply@pluginus.net] FROM THE FORUM!! Emails are just for your info, all answers should be published only here.
The support doesn work on Saturdays and Sundays, so some Friday requests can be answered on Monday.
Quote from Alex Dovlatov on November 4, 2025, 12:27Hello Bulli
You not undertood me. Please use keys here https://share.pluginus.net/image/i20251103142130.png - BUT the code write in functions.php. That keys are just short string to let the script know what ld-json to type. Here is result: https://share.pluginus.net/image/i20251104122504.png
Place this code into functions.php file:
add_action('init', function () {
$url_request=WOOF_EXT::$includes['applications']['url_request'];
remove_filter('woocommerce_after_shop_loop', array($url_request->seo, 'add_seo_text'), 99999);add_filter('woocommerce_after_shop_loop', function () use($url_request) {
$rule = $url_request->seo->check_search_rules();
if (!isset($rule['text']) || !$url_request->seo->do_index()) {
return;
}$txt = apply_filters('woof_seo_text', $url_request->seo->replace_vars($rule['text'], $url_request->seo->get_current_replace_vars()));
if (!empty($txt)) {
switch ($txt) {
case 'sh1':$txt='<script type="application/ld+json">
{
"@context":"https://schema.org",
"@graph": [
{
...
}
]
}
</script>';break;
default:
break;
}echo '<div class="woof_seo_text">' . $txt . "</div>\r\n";
}
}, 99999);
}, 1);
Use only keys here https://share.pluginus.net/image/i20251104122715.png - ONLY KEYS, let the code will be placed in file.functions.php file as admitted above
Hello Bulli
You not undertood me. Please use keys here https://share.pluginus.net/image/i20251103142130.png - BUT the code write in functions.php. That keys are just short string to let the script know what ld-json to type. Here is result: https://share.pluginus.net/image/i20251104122504.png
Place this code into functions.php file:
add_action('init', function () {
$url_request=WOOF_EXT::$includes['applications']['url_request'];
remove_filter('woocommerce_after_shop_loop', array($url_request->seo, 'add_seo_text'), 99999);
add_filter('woocommerce_after_shop_loop', function () use($url_request) {
$rule = $url_request->seo->check_search_rules();
if (!isset($rule['text']) || !$url_request->seo->do_index()) {
return;
}
$txt = apply_filters('woof_seo_text', $url_request->seo->replace_vars($rule['text'], $url_request->seo->get_current_replace_vars()));
if (!empty($txt)) {
switch ($txt) {
case 'sh1':
$txt='<script type="application/ld+json">
{
"@context":"https://schema.org",
"@graph": [
{
...
}
]
}
</script>';
break;
default:
break;
}
echo '<div class="woof_seo_text">' . $txt ."</div>\r\n";
}
}, 99999);
}, 1);
Use only keys here https://share.pluginus.net/image/i20251104122715.png - ONLY KEYS, let the code will be placed in file.functions.php file as admitted above
Quote from bulli on November 8, 2025, 10:07Hello,
thank you for the code.
Is there maybe an option to store the schema files in a separate/schema/folder and load them from there — for example assh1.json, where the JSON-LD code is included inside each file?That would make management and maintenance much easier.
Thank you very much for your support! 🙏
Hello,
thank you for the code.
Is there maybe an option to store the schema files in a separate /schema/ folder and load them from there — for example as sh1.json, where the JSON-LD code is included inside each file?
That would make management and maintenance much easier.
Thank you very much for your support! 🙏
Quote from Alex Dovlatov on November 10, 2025, 13:15Hello Bulli
Yes, it is possible, here is the code:
add_action('init', function () {$url_request = WOOF_EXT::$includes['applications']['url_request'];remove_filter('woocommerce_after_shop_loop', array($url_request->seo, 'add_seo_text'), 99999);add_filter('woocommerce_after_shop_loop', function () use($url_request) {$rule = $url_request->seo->check_search_rules();if (!isset($rule['text']) || !$url_request->seo->do_index()) {return;}$sh_key = apply_filters('woof_seo_text', $url_request->seo->replace_vars($rule['text'], $url_request->seo->get_current_replace_vars()));if (!empty($sh_key)) {// Path to JSON-LD schemas folder$upload_dir = wp_upload_dir();$schemas_dir = $upload_dir['basedir'] . '/json-ld-schemas/';$schema_file = $schemas_dir . $sh_key . '.json';// Check if file exists and read itif (file_exists($schema_file)) {$txt = file_get_contents($schema_file);echo '<div class="woof_seo_text"><script type="application/ld+json">' . $txt . "</script></div>\r\n";}}}, 99999);}, 1);You need to create in folder wp-upload new folder 'json-ld-schemas' - and place your json files with names the same as keys in HUSKY admin you use for shemas, for example key1.json, and you can place in that file code like:
{ "@context": "https://schema.org", "@graph": [ { ... } ] } - you see, clean json only, but this way is good if you have static jsons, if you need dynamic information for ld-json:add_action('init', function () {$url_request = WOOF_EXT::$includes['applications']['url_request'];remove_filter('woocommerce_after_shop_loop', array($url_request->seo, 'add_seo_text'), 99999);add_filter('woocommerce_after_shop_loop', function () use($url_request) {$rule = $url_request->seo->check_search_rules();if (!isset($rule['text']) || !$url_request->seo->do_index()) {return;}$sh_key = apply_filters('woof_seo_text', $url_request->seo->replace_vars($rule['text'], $url_request->seo->get_current_replace_vars()));if (!empty($sh_key)) {// Path to JSON-LD schemas folder$upload_dir = wp_upload_dir();$schemas_dir = $upload_dir['basedir'] . '/json-ld-schemas/';$schema_file = $schemas_dir . $sh_key . '.json';// Check if file exists and read itif (file_exists($schema_file)) {$txt = file_get_contents($schema_file);echo '<div class="woof_seo_text"><script type="application/ld+json">' . $txt . "</script></div>\r\n";}}}, 99999);}, 1);as an example create file /wp-content/uploads/json-ld-schemas/sh1.php:
<?php
// sh1.php - Dynamic JSON-LD for product categoryglobal $wp_query;
$term = get_queried_object();
$category_name = $term ? $term->name : 'Products';
$category_url = get_term_link($term);$json = array(
'@context' => 'https://schema.org',
'@type' => 'CollectionPage',
'name' => $category_name,
'url' => $category_url,
'description' => term_description($term->term_id),
'breadcrumb' => array(
'@type' => 'BreadcrumbList',
'itemListElement' => array(
array(
'@type' => 'ListItem',
'position' => 1,
'name' => 'Home',
'item' => home_url()
),
array(
'@type' => 'ListItem',
'position' => 2,
'name' => $category_name,
'item' => $category_url
)
)
)
);echo json_encode($json, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
I hope you undertood both ideas
Welcome!
Hello Bulli
Yes, it is possible, here is the code:
{ "@context": "https://schema.org", "@graph": [ { ... } ] } - you see, clean json only, but this way is good if you have static jsons, if you need dynamic information for ld-json:
as an example create file /wp-content/uploads/json-ld-schemas/sh1.php:
<?php
// sh1.php - Dynamic JSON-LD for product category
global $wp_query;
$term = get_queried_object();
$category_name = $term ? $term->name : 'Products';
$category_url = get_term_link($term);
$json = array(
'@context' => 'https://schema.org',
'@type' => 'CollectionPage',
'name' => $category_name,
'url' => $category_url,
'description' => term_description($term->term_id),
'breadcrumb' => array(
'@type' => 'BreadcrumbList',
'itemListElement' => array(
array(
'@type' => 'ListItem',
'position' => 1,
'name' => 'Home',
'item' => home_url()
),
array(
'@type' => 'ListItem',
'position' => 2,
'name' => $category_name,
'item' => $category_url
)
)
)
);
echo json_encode($json, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
I hope you undertood both ideas
Welcome!
Quote from bulli on November 11, 2025, 19:19Hello Alex,
thank you very much for your help and the code example.
One small issue remains:
the JSON key (for examplekey_action1) is still displayed at the top of the frontend.
So the file is not being loaded, and the key itself appears as plain text.Could you please help me with this?
Thanks again for your time and support!
Hello Alex,
thank you very much for your help and the code example.
One small issue remains:
the JSON key (for example key_action1) is still displayed at the top of the frontend.
So the file is not being loaded, and the key itself appears as plain text.
Could you please help me with this?
Thanks again for your time and support!
Quote from Alex Dovlatov on November 12, 2025, 12:25Hello Bulli
Drop me please ftp access to the site (to the private area) and I will place the script self there
https://share.pluginus.net/image/i20230222134241.png
https://share.pluginus.net/image/i20230222134615.png
https://share.pluginus.net/image/i20230222134511.png
Hello Bulli
Drop me please ftp access to the site (to the private area) and I will place the script self there
https://share.pluginus.net/image/i20230222134241.png
https://share.pluginus.net/image/i20230222134615.png
https://share.pluginus.net/image/i20230222134511.png
Quote from bulli on November 12, 2025, 18:36Thank you has been acknowledged. Best regards
Thank you has been acknowledged. Best regards
Quote from Alex Dovlatov on November 13, 2025, 13:49Hello Bulli
Wha I did on this ftp before I undertood that server I entered is wrong one:
- changed file /uploads/json-ld-schemas/keyaction1.php - fixed how data should be storaged
- into file /themes/riode-child/functions.php added new script
add_action('init', function () {
$url_request = WOOF_EXT::$includes['applications']['url_request'];
remove_filter('woocommerce_after_shop_loop', array($url_request->seo, 'add_seo_text'), 99999);
add_filter('woocommerce_after_shop_loop', function () use ($url_request) {$rule = $url_request->seo->check_search_rules();
if (!isset($rule['text']) || !$url_request->seo->do_index()) {
return;
}$sh_key = apply_filters('woof_seo_text', $url_request->seo->replace_vars($rule['text'], $url_request->seo->get_current_replace_vars()));
if (!empty($sh_key)) {
// Path to JSON-LD schemas folder
$upload_dir = wp_upload_dir();
$schemas_dir = $upload_dir['basedir'] . '/json-ld-schemas/';
$schema_file = $schemas_dir . $sh_key . '.php';if (file_exists($schema_file)) {
$schema_data = include($schema_file);
$json_output = json_encode($schema_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
echo '<div class="woof_seo_text"><script type="application/ld+json">' . $json_output . "</script></div>\r\n";
}
}
}, 99999);
}, 1);Please try it self or give me right ftp access
Welcome!
Hello Bulli
Wha I did on this ftp before I undertood that server I entered is wrong one:
- changed file /uploads/json-ld-schemas/keyaction1.php - fixed how data should be storaged
- into file /themes/riode-child/functions.php added new script
add_action('init', function () {
$url_request = WOOF_EXT::$includes['applications']['url_request'];
remove_filter('woocommerce_after_shop_loop', array($url_request->seo, 'add_seo_text'), 99999);
add_filter('woocommerce_after_shop_loop', function () use ($url_request) {$rule = $url_request->seo->check_search_rules();
if (!isset($rule['text']) || !$url_request->seo->do_index()) {
return;
}$sh_key = apply_filters('woof_seo_text', $url_request->seo->replace_vars($rule['text'], $url_request->seo->get_current_replace_vars()));
if (!empty($sh_key)) {
// Path to JSON-LD schemas folder
$upload_dir = wp_upload_dir();
$schemas_dir = $upload_dir['basedir'] . '/json-ld-schemas/';
$schema_file = $schemas_dir . $sh_key . '.php';if (file_exists($schema_file)) {
$schema_data = include($schema_file);
$json_output = json_encode($schema_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
echo '<div class="woof_seo_text"><script type="application/ld+json">' . $json_output ."</script></div>\r\n";
}
}
}, 99999);
}, 1);
Please try it self or give me right ftp access
Welcome!
Quote from bulli on November 13, 2025, 15:24Hello, thank you for your feedback.
So, when the code in functions.php is active, the "SEO text" with its HTML code disappears completely.
The FTP account is correct.
Thank you for your support.
Attached is some information under "private data for this topic."
Hello, thank you for your feedback.
So, when the code in functions.php is active, the"SEO text" with its HTML code disappears completely.
The FTP account is correct.
Thank you for your support.
Attached is some information under"private data for this topic."
Quote from Alex Dovlatov on November 14, 2025, 13:09Hello Bulli
Previous message was edited
I just tried to make tests - but site is under cache: Redis Object Cache, so some my code doesn work, create please clone of this site on test subdomain by Duplicator https://wordpress.org/plugins/duplicator/ and provide please wp-admin and ftp access to that cloned site, you site is in production mode, so better do not make such experiments as I doing there
Welcome :)
Article is created: https://products-filter.com/how-to-add-custom-json-ld-schema-markup-per-seo-url-request/
Hello Bulli
Previous message was edited
I just tried to make tests - but site is under cache: Redis Object Cache, so some my code doesn work, create please clone of this site on test subdomain by Duplicator https://wordpress.org/plugins/duplicator/ and provide please wp-admin and ftp access to that cloned site, you site is in production mode, so better do not make such experiments as I doing there
Welcome :)
Article is created: https://products-filter.com/how-to-add-custom-json-ld-schema-markup-per-seo-url-request/