Укажите пользовательский канонический URL-адрес в записи WordPress

У нас более 1000 веб-сайтов, большинство из которых посвящены конкретным спортивным событиям. В настоящее время наши писатели пишут всем им специально для уникального контента.

Однако у нас есть 2 основных сайта, которые освещают все события по своим вертикалям; и мы хотели бы начать синдицировать контент с этих крупных сайтов на мини-сайты.

Чтобы сохранить лучшие практики в глазах Google, нам нужно было бы указать исходный источник статьи с помощью тега rel=canonical, однако наш текущий плагин AIOSEO (All-in-One SEO) не поддерживает указание канонических тегов в сообщении, или постраничной основе.

Есть ли способ создать такую ​​функцию?


person SEOGuy    schedule 10.09.2013    source источник
comment
не могли бы вы использовать этот theblog.ca/custom-canonical-urls-wordpress   -  person Shakti Patel    schedule 10.09.2013
comment
Спасибо! Кажется, это то, что я ищу.   -  person SEOGuy    schedule 10.09.2013


Ответы (2)


не могли бы вы использовать этот код:

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' );
person Shakti Patel    schedule 10.09.2013
comment
-1. Это должно как минимум указывать первоисточник. Кроме того, первая скопированная функция (rel_canonical) является примером собственной внутренней функции WordPress, а не той, которую следует включать в пользовательскую функцию. Этот код необходимо объяснить и найти источник. - person indextwo; 21.06.2018

Мы также можем добавить это для мета-ключевых слов, мета-описания и мета-заголовка.

// 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;
}

Пожалуйста, проверьте этот URL для справки

person Rajavel Balasubramanian    schedule 27.02.2016