Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Specify custom canonical URL in WordPress Post

We operate 1000's of websites, most of them are are made for specific sports events. Currently we have our writers write to all of them specifically for unique content.

However we have 2 major sites that cover all events in their verticals; and we would like to start syndicating content to the minisites, from these major sites.

To maintain best practices in Google's eyes, we would have to specify the original source of the article via the rel=canonical tag - however our current plugin AIOSEO (All-in-One SEO) doesn't support specifying canonical tags on a post, or page basis.

Is there a way to create such a function?

like image 393
SEOGuy Avatar asked Sep 10 '13 04:09

SEOGuy


2 Answers

can you please used this code :

function rel_canonical() {
    if ( !is_singular() )
        return;

    global $wp_the_query;
    if ( !$id = $wp_the_query->get_queried_object_id() )
        return;

    $link = get_permalink( $id );
    echo "<link rel='canonical' href='$link' />\n";
}

// A copy of rel_canonical but to allow an override on a custom tag
function rel_canonical_with_custom_tag_override()
{
    if( !is_singular() )
        return;

    global $wp_the_query;
    if( !$id = $wp_the_query->get_queried_object_id() )
        return;

    // check whether the current post has content in the "canonical_url" custom field
    $canonical_url = get_post_meta( $id, 'canonical_url', true );
    if( '' != $canonical_url )
    {
        // trailing slash functions copied from http://core.trac.wordpress.org/attachment/ticket/18660/canonical.6.patch
        $link = user_trailingslashit( trailingslashit( $canonical_url ) );
    }
    else
    {
        $link = get_permalink( $id );
    }
    echo "<link rel='canonical' href='" . esc_url( $link ) . "' />\n";
}

// remove the default WordPress canonical URL function
if( function_exists( 'rel_canonical' ) )
{
    remove_action( 'wp_head', 'rel_canonical' );
}
// replace the default WordPress canonical URL function with your own
add_action( 'wp_head', 'rel_canonical_with_custom_tag_override' );
like image 178
Shakti Patel Avatar answered Sep 19 '22 12:09

Shakti Patel


We can also add this for meta keywords, meta description and meta title

// function to insert All-in-One SEO Pack keywords
function keyword_insert() {
   global $post; // VERY important!

   // Retrieve keyword meta data from the SEO Pack
   $seokeywords = stripslashes(get_post_meta($post->ID, '_aioseop_keywords', true));

   // Default keywords in case none are specified for the page
   if (empty($seokeywords)) $seokeywords = "Homestar Runner, Strong Bad, The Cheat";

   // Output the html code
   $seokeyword_block = "<meta name=\"keywords\" content=\"".$seokeywords."\"/>\n";
   echo $seokeyword_block;
}

// function to insert All-in-One SEO Pack description
function description_insert() {
   global $post; // VERY important!

   // Retrieve description meta data from the SEO Pack
   $seodesc = stripslashes(get_post_meta($post->ID, '_aioseop_description', true));

   // Default description in case none is specified for the page
   if (empty($seodesc)) $seodesc = "Oh! I am Homestar, and This is A Website!";

   // Output the html code
   $seodesc_block = "<meta name=\"description\" content=\"".$seodesc."\"/>\n";
   echo $seodesc_block;
}

function title_insert() {
   global $post; // VERY important!

   // Retrieve title meta data from the SEO Pack
   $seotitle = stripslashes(get_post_meta($post->ID, '_aioseop_title', true));

   // Default description in case none is specified for the page
   if (empty($seotitle)) $seotitle = "";

   // Output the html code
   $seotitle_block = "<title>".$seotitle."</title><meta name=\"title\" content=\"".$seotitle."\"/>\n";
   echo $seotitle_block;
}

Please check this URL for reference

like image 45
Rajavel Balasubramanian Avatar answered Sep 16 '22 12:09

Rajavel Balasubramanian