Point the Yoast Canonical to an Original Source
Uses a URL saved in a custom field as the canonical link on posts republished from another site, overriding Yoast's default.
Opens WPIDE on
Code
// Custom field holding the original URL.
$wpide_canonical_field = 'original_url';
add_filter( 'wpseo_canonical', function ( $canonical ) use ( $wpide_canonical_field ) {
if ( ! is_singular() ) {
return $canonical;
}
$source = esc_url_raw( (string) get_post_meta( get_queried_object_id(), $wpide_canonical_field, true ) );
return wp_http_validate_url( $source ) ? $source : $canonical;
} );
Notes
Add a custom field named original_url with the full source URL to a post. Yoast Premium's canonical field also works per post.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.