Skip to content

Instantly share code, notes, and snippets.

@jordanmaslyn
Created January 6, 2022 23:33
Show Gist options
  • Save jordanmaslyn/7e28423ef43cdb6af068f5f192077746 to your computer and use it in GitHub Desktop.
Save jordanmaslyn/7e28423ef43cdb6af068f5f192077746 to your computer and use it in GitHub Desktop.
Fix Yoast sitemaps when working with headless WP
<?php
/*
* Replacing domain for rest api requests from Gutenberg editor if youre using
* WP headless and WP_SITEURL & WP_HOME are not the same domain
* (has nothing to do with yoast)
*/
add_filter('rest_url', function($url) {
$url = str_replace(home_url(), site_url(), $url);
return $url;
});
/*
* Replacing domain for stylesheet to xml if youre using WP headless
* and WP_SITEURL & WP_HOME are not the same domain
*/
function filter_wpseo_stylesheet_url( $stylesheet ) {
$home = parse_url(home_url());
$site = parse_url(site_url());
return str_replace($home, $site, $stylesheet);
};
add_filter( 'wpseo_stylesheet_url', 'filter_wpseo_stylesheet_url', 10, 1 );
@jordanmaslyn
Copy link
Author

@danielenriquehoward Ah yes, WP's naming scheme between site and home URLs can be very confusing. I do wish they'd make that clearer, but alas, after being this way for so long, I am not hopeful about them changing it now.

As for which approach to take, I personally feel more confident about updating home_url and filtering the rest_url accordingly. Namely because it is a semantic use of that field, secondly we can see Automattic themselves take the same approach here : https://github.com/Automattic/vip-decoupled-bundle/blob/5b3bb95d7540893c8039fb14fc62ee583305274e/urls/urls.php, and thirdly because having to recur through a callstack feels MUCH more "hacky" to me personally. Ultimately though, go with the approach you feel more comfortable with.

@danielenriquehoward
Copy link

@jordanmaslyn

I see your point. Will update home_url, thanks for your help.

@danielenriquehoward
Copy link

Note: if you use migrateDB pro, changing home_url will break the default rewrites and then your .local will be redirected to .com backend. To fix, just add a custom rewrite rule.

@sbnoman01
Copy link

Hi, I'm facing one issue.
when i changed the Site address URL to the frontend url, My WordPress application stopped working properly, like i can't login or if i login then i can't log out, The issue i noticed. WordPress Login form action is set to the WordPress application URL. In this case what i can do.

@jordanmaslyn
Copy link
Author

jordanmaslyn commented Nov 30, 2023

@sbnoman01 Hmmm, I have not seen that behavior before. It sounds like you may have changed the wrong URL setting. If doing it from the WP Admin dashboard, make sure you are changing the setting titled "Site Address (URL)" or if you are changing it in code/the database, make sure you are changing home_url (not site_url). With that change and the rest_url filter above, you should be A-OK logging in and out of the WordPress dashboard like normal.

In the admin, "WordPress Address (URL)" and in code/database site_url should always reflect the URL to your WordPress installation.

@sbnoman01
Copy link

Hi @jordanmaslyn Thank you for your response, Basically, i changed "Site Address (URL)" from wp-admin/options-general.php then everything looks good but when I try to log in from any other browser or try to logout from right top corner it redirects me to the Frontend url with the required parameters.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment