WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

Как бороться с дублями или canonical?

Посте того как я избавился от All in One SEO Pack сменив его на код все просто супер. Но вот в плагине была замечательная функция тег canonical, которая указывала поисковикам оригинал. Как теперь с этим бороться, подскажите. Как Вы с этим боритесь?

penuel82 2.7 года назад

Понял! Моя ошибка! Я опускал скрипты в футер вот этим скриптом

<?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(); ?>
Kama 2.7 года назад

Мало что понятно, если честно. Приведенный код никак не влияет на каноническую ссылку. Она в движке добавляется так (файл wp-includes/default-filters.php строка 210):

add_action( "wp_head", "rel_canonical" );

А удаляется так:

remove_action( "wp_head", "rel_canonical" );
penuel82 2.7 года назад

Ну значит у меня ее вовсе нет! Вот код моего 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

Kama 2.7 года назад

Верните <?php wp_head(); ?> в head блок! Нельзя его переносить в footer есть wp_footer();. Зачем вы это сделали? Вы же сами в первой заметке дали код как перенести все скрипты из head в footer зачем еще wp_head(); переносить? Что-то вы мудрите, такими темпами вы только и будите что баги отлавливать, при каждом редактировании шаблона...

penuel82 2.7 года назад

Борюсь за ускорение и избавляюсь от скриптов в хедере

вернул на место

<?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" />

Это нормально ?

Kama 2.7 года назад

Нормально! Для ускорения и переноса скриптов в footer используйте плагин: Autoptimize

penuel82 2.7 года назад

а код

<?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);

можно удалить ?

Kama 2.7 года назад

При использовании плагина, можно. Потестируйте. Если с этим кодом все работает, то можно и оставить...

1
penuel825 2.7 года назад
  • 0
    Kama4477

    Я никак не борюсь, как в WordPress по умолчанию есть, так и стоит.

    вот в плагине была замечательная функция тег canonical

    В каких случаях она вам помогала, можно узнать? Как вы её использовали?

    C версии 2.3 WordPress сам выставляет тег canonical для страниц типа is_single(). Т.е. по идее для страниц комментариев дублирования не происходит. Чтобы удалить этот тег, нужно удалить этот фильтр:

    remove_action( "wp_head", "rel_canonical" );

    Вот таким кодом можно заменить стандартную функцию 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"
    	$canonical_url = get_post_meta( $id, 'canonical', 1 );
    	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";
    }
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.