WordPress.org

Forums

NextGEN Facebook - Complete Meta Tags for Facebook, Google, Pinterest, Twitter & More
[resolved] Keeping OG URLs when changing site domain (17 posts)

  1. woozyg
    Member
    Posted 1 year ago #

    For various reasons we are changing the domain of my wife's blog. However, She has several posts with 10s of thousands of FB likes. We'd obviously like to keep that OpenGraph data connected to the content as it moves.

    I believe the only way to do this is to make the "og:url" meta tag have the old domain for old content, and the new domain for new content.

    If I buy the pro version, is this something I could do? Ideally, I'd want a simple option to specify a non-default domain for all content with a publish date prior to a given date (the domain cut-over date).

    Barring that, I'd be OK with being able to manually add/update records to the database or a text file to add overrides for the old posts, as it will be a fixed set.

    Barring that, if I have no other options, I'll weigh doing it by hand for 250 posts vs. learning a new language and tool set, and writing a post-processing plugin to do it myself.

    http://wordpress.org/plugins/nextgen-facebook/

  2. JS Morisset
    Member
    Plugin Author

    Posted 1 year ago #

    Well, that's an interesting challenge...

    We can definitely do this, no problem, but sometimes the hard part is figuring out the best approach. ;-)

    Let me ask you a few questions to nail this down...

    Do you mean that you have 250 posts that need the URL adjusted?

    Is this just the domain name, or the path as well?

    Can we determine the cut-off by the post ID number? Say, anything bellow post ID 1234, for example, needs the URL modified?

    Thanks,

    js.

  3. woozyg
    Member
    Posted 1 year ago #

    Yes, I agree, the solution seems quite reasonable, the where and how of it is the question.

    To answer your questions, yes, it around 250 old posts in question, only the domain needs to change, and the cut-off can be by post ID - less than or equal to post ### (or strictly less than ###+1) gets the old domain, everything greater uses the current domain. The post that identifies the divide can be termed the "last to use the old domain" or "first to use the new domain" and the logic flow from that distinction.

    I got the idea from this stackoverflow question.

    In our case, I can figure out how to handle the 301 redirect for links coming in to the old domain, but making the og:url value for the page rendered under the new domain reference the old domain is where I need help.

    Thank you!

  4. JS Morisset
    Member
    Plugin Author

    Posted 1 year ago #

    No problem. How about this?

    add_filter( 'ngfb_sharing_url', 'maintain_old_sharing_urls', 10, 2 );
    function maintain_old_sharing_urls ( $url, $source_id ) {
            if ( is_singular() ) {
                    global $post;
                    if ( ! empty( $post->ID ) && $post->ID <= 450 )
                            $url = preg_replace( '/:\/\/newdomain\.com\//', '://olddomain.com/', $url );
            }
            return $url;
    }

    js.

  5. woozyg
    Member
    Posted 1 year ago #

    That looks promising. Where would I put the filter and function? I can handle testing and debugging any issues with the regex, if I just knew where to add this awesome bit of code :) As the old joke goes, it's all about knowing where to put the X. I'm an old Java web guy, new to PHP and the WordPress platform and APIs. Still figuring out what I can touch where without breaking updatability or causing terminal performance issues.

    Thanks for the help, my wife is very relieved to have a possible solution for keeping the social credibility and history for content she's worked hard to develop.

  6. JS Morisset
    Member
    Plugin Author

    Posted 1 year ago #

    The code goes in the child theme's functions.php file. If you don't have a child theme, you should make one (unless you never plan on updating your theme.) There's lots of info out there about creating child themes, and I think there are even plugins available to create them easily/quickly.

    js.

  7. JS Morisset
    Member
    Plugin Author

    Posted 1 year ago #

  8. JS Morisset
    Member
    Plugin Author

    Posted 1 year ago #

    The 'ngfb_sharing_url' hook (in the current version) does not distinguish between requests for the current webpage URL, and the URL for buttons for individual posts within an index webpage. You're better off using the following code with v6.16.1.0 (probably released later today):

    add_filter( 'ngfb_post_url', 'modify_post_url', 10, 2 );
    
    function modify_post_url ( $url, $post_id ) {
        if ( ! empty( $post_id ) && $post_id <= 450 )
            $url = preg_replace( '/:\/\/newdomain\.com\//', '://olddomain.com/', $url );
        return $url;
    }

    js.

  9. woozyg
    Member
    Posted 1 year ago #

    Thanks! That function worked like a charm, FB sees the proper old URL as the canonical graph URL for old posts.

    However, the "Like" button added by the plugin to posts does not use the calculated graph URL, instead it still uses the current page URL, which as the new domain.

    Is there a way I can use the filter to also filter the URL passed to the "Like" button?

  10. JS Morisset
    Member
    Plugin Author

    Posted 1 year ago #

    Do you have a URL to an example page? If you have a canonical meta tag, from an SEO plugin for example, that would tell Facebook to use the new URL. I'll have a look.

    js.

  11. woozyg
    Member
    Posted 1 year ago #

    Here is a good page to check:

    http://bethwoolsey.com/2013/05/20-things-every-parent-should-hear/

    old page:

    http://putdowntheurinalcake.com/2013/05/20-things-every-parent-should-hear/

    the new one properly has pudowntheurinalcake.com as the og:url domain, but the Like button is using the above domain. The old domain page has 17,000 likes.

    [Moderator Note: Please ensure that you are embedding links correctly in your posts.]

  12. JS Morisset
    Member
    Plugin Author

    Posted 1 year ago #

    Looks good, but I think you may be confused about something...

    The Open Graph meta tags are used by social websites when they need information on the webpage, for example, when someone posts the URL in a Facebook post etc. The Facebook debugger shows that the ngfb_post_url filter is doing its job:

    https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fbethwoolsey.com%2F2013%2F05%2F20-things-every-parent-should-hear%2F

    We're all good so far.

    Your problem is your Facebook button - it's not the NGFB Open Graph+ button, so it's not using the correct URL. For the Send / Share function, I think this is ok since Facebook *should* switch to using the URL in the Open Graph meta tag (as the debugger shows). The problem is the JavaScript from Facebook for the Like button is using the new URL to check for Likes. There's no checking of Open Graph meta tags for that - it's a straight connection by the JavaScript to get the number of Likes for a URL.

    If you were to use the Facebook button from NGFB Open Graph+, your Likes would show correctly.

    You may want to check with that other plugin's author to see if there's a similar filter hook available to change the URL used by their button.

    js.

  13. woozyg
    Member
    Posted 1 year ago #

    Hmm. Thanks for the clarification. I think the issue is indeed two plugins doing FB stuff. I'll track down which one is providing the Like button and figure out how to use yours instead.

    Thank you for all your help on this, you've saved me a ton of time speeding up my learning curve.

  14. JS Morisset
    Member
    Plugin Author

    Posted 1 year ago #

    No problem.

    BTW, in your case, the following filter might be more useful:

    http://support.surniaulula.com/support/solutions/articles/1000002646-modify-the-shared-url-for-a-sharing-button

    Which, adapted to your circumstances, might look like this:

    add_filter( 'ngfb_sharing_url', 'modify_facebook_sharing_url', 10, 4 );
    
    function modify_facebook_sharing_url( $url, $use_post, $add_page, $src_id ) {
    
        if ( ! empty( $src_id ) && preg_match( '/^(fb|facebook)-/', $src_id ) ) {
            global $post;
            if ( ! empty( $post->ID ) && $post->ID <= 450 )
                $url = preg_replace( '/:\/\/newdomain\.com\//', '://olddomain.com/', $url );
        }
        return $url;
    }
  15. woozyg
    Member
    Posted 1 year ago #

    Adding that filter fixed the like count, so I must be using your button now :)

    Thank you for your help! I'm a hero to my wife thanks to you.

  16. woozyg
    Member
    Posted 1 year ago #

    In fact, she just thanked you by purchasing the pro version, even though we don't currently need the pro features. And you will get a geek shout-out in her next post about the site changes.

  17. JS Morisset
    Member
    Plugin Author

    Posted 1 year ago #

    Thanks - mighty nice of you guys.

    I'm sure you'll find the Pro features useful - it's nice to tweak the shared text for Google and each social website.

    js.

Topic Closed

This topic has been closed to new replies.

About this Plugin

About this Topic

Tags

No tags yet.