Как бороться с дублями или canonical?
Посте того как я избавился от All in One SEO Pack сменив его на код все просто супер. Но вот в плагине была замечательная функция тег canonical, которая указывала поисковикам оригинал. Как теперь с этим бороться, подскажите. Как Вы с этим боритесь?
Понял! Моя ошибка! Я опускал скрипты в футер вот этим скриптом
<?php
/**
* Load Enqueued Scripts in the Footer
*
* Automatically move JavaScript code to page footer, speeding up page loading time.
*/
function footer_enqueue_scripts() {
remove_action('wp_head', 'wp_print_scripts');
remove_action('wp_head', 'wp_print_head_scripts', 9);
remove_action('wp_head', 'wp_enqueue_scripts', 1);
add_action('wp_footer', 'wp_print_scripts', 5);
add_action('wp_footer', 'wp_enqueue_scripts', 5);
add_action('wp_footer', 'wp_print_head_scripts', 5);
то стал работать не корректно!
Я то и его переместил в футер. Наверное что то неправильно поступил?
Когда речь идет о перемещении в футер то идет речь вот об это
<?php wp_head(); ?>
Мало что понятно, если честно. Приведенный код никак не влияет на каноническую ссылку. Она в движке добавляется так (файл wp-includes/default-filters.php строка 210):
add_action( "wp_head", "rel_canonical" );
А удаляется так:
remove_action( "wp_head", "rel_canonical" );
Верните <?php wp_head(); ?> в head блок! Нельзя его переносить в footer есть wp_footer();. Зачем вы это сделали? Вы же сами в первой заметке дали код как перенести все скрипты из head в footer зачем еще wp_head(); переносить? Что-то вы мудрите, такими темпами вы только и будите что баги отлавливать, при каждом редактировании шаблона...
Ну значит у меня ее вовсе нет! Вот код моего heder.php
<!DOCTYPE html>
<html>
<head>
<title><?php kama_meta_title (" | "); ?></title>
<?php kama_meta_description () ?>
<?php kama_meta_keywords () ?>
<?php kama_meta_robots () ?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="generator" content="WordPress 3.8.1" /> <!-- leave this for stats please -->
<link rel="stylesheet" href="http://www.industrialist.net.ua/wp-content/themes/azul/style.css" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://www.industrialist.net.ua/feed" />
<link rel="alternate" type="text/xml" title="RSS .92" href="http://www.industrialist.net.ua/feed/rss" />
<link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="http://www.industrialist.net.ua/feed/atom" />
<link rel="pingback" href="http://www.industrialist.net.ua/xmlrpc.php" />
</head>
<body>
<div id="container">
<div id="header">
<?php if (is_home ()){ ?>
<h1 align="center"><?php bloginfo ('info'); ?></h1>
<?php } else {?>
<p align="center"><a href="<?php bloginfo ('url'); ?>"><?php bloginfo ('info'); ?></a></p>
<?php } ?>
<div id="search">
<?php include(TEMPLATEPATH . '/searchform.php'); ?>
</div>
</div>
<div id="navbar">
<?php wp_page_menu('show_home=1'); ?>
</div>
а код
<?php wp_head(); ?>
я перенес в футер, он выдает скрипты в html
Борюсь за ускорение и избавляюсь от скриптов в хедере
вернул на место
<?php wp_head(); ?>
он выдает код в html
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.industrialist.net.ua/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://www.industrialist.net.ua/wp-includes/wlwmanifest.xml" /> <meta name="generator" content="WordPress 3.8.1" />
Это нормально ?
Нормально! Для ускорения и переноса скриптов в footer используйте плагин: Autoptimize
а код
<?php
/**
* Load Enqueued Scripts in the Footer
*
* Automatically move JavaScript code to page footer, speeding up page loading time.
*/
function footer_enqueue_scripts() {
remove_action('wp_head', 'wp_print_scripts');
remove_action('wp_head', 'wp_print_head_scripts', 9);
remove_action('wp_head', 'wp_enqueue_scripts', 1);
add_action('wp_footer', 'wp_print_scripts', 5);
add_action('wp_footer', 'wp_enqueue_scripts', 5);
add_action('wp_footer', 'wp_print_head_scripts', 5);
можно удалить ?
При использовании плагина, можно. Потестируйте. Если с этим кодом все работает, то можно и оставить...
Я никак не борюсь, как в WordPress по умолчанию есть, так и стоит.
В каких случаях она вам помогала, можно узнать? Как вы её использовали?
C версии 2.3 WordPress сам выставляет тег canonical для страниц типа is_single(). Т.е. по идее для страниц комментариев дублирования не происходит. Чтобы удалить этот тег, нужно удалить этот фильтр:
Вот таким кодом можно заменить стандартную функцию rel_canonical():
// удалим WordPress canonical URL по умолчанию и // добавим свою каноническую ссылку remove_action( 'wp_head', 'rel_canonical' ); add_action( 'wp_head', 'kama_meta_canonical' ); /* * Аналог rel_canonical в WordPress, которая позволяет кастомно * указать каноническую ссылку в произвольных полях. * Для этого создайте у поста произвольное поле canonical, а в значении укажите ссылку */ function kama_meta_canonical(){ if( !is_singular() ) return; global $wp_the_query; if( ! $id = $wp_the_query->get_queried_object_id() ) return; // проверим произвольное поле у поста "canonical" if( $canonical_url = get_post_meta( $id, 'canonical', 1 ) ) $link = esc_url( $canonical_url ); else $link = get_permalink( $id ); echo '<link rel="canonical" href="' . $link . '" />'. "\n"; }Поправил, спасибо!