Как заменить мета-заголовок и мета-описание в WordPress?

Извините, если мой вопрос был базовым или глупым, но, пожалуйста, помогите мне решить эту проблему. Я пытаюсь изменить <title> а также <meta name="description" > теги динамически в WordPress. вот что я попробовал в файле function.php.

function changeMeta_2(){
global $wpdb;
$cur_url = $_SERVER['REQUEST_URI'];
$basename = pathinfo($cur_url);
$ebasename = $basename['filename'];
if(is_numeric($ebasename)) {
$url = explode('/', $basename['dirname']);
$basename = explode('.', $url[count($url)-2]);
$ebasename = $basename[0];
}
$pageName = $ebasename;$arraylist_subcat  = array("car","bike","boat","xxxx","yyyy","zzz","mmmm");
$arraylist_maincat = array("aus","ind","usa","uae");$category_id = get_term_by('slug',$pageName, 'category');
$category_parentid  = get_term_by('id', $category_id->parent, 'category');
$parent_slug =  $category_parentid->slug;if ( is_page()) {
if ( in_array($pageName,$arraylist_maincat) ) {
$metaTitle = 'Browse  '.$pageName.' | Some txt title | mysite.com';
$metaDescription = 'some of custome blablaaaaa text description  '.$pageName.' some of custome blablaaaaa text description ';
echo '<title>'.$metaTitle.'</title>';
echo '<meta name="description" content="'.$metaDescription.'"/>';
}
}
}
add_action( 'wp_head', 'changeMeta_2' );

В приведенном выше коде я пытаюсь изменить тег заголовка и мета-описание для идентификатора термина, которые соответствуют значениям массива (условие in_array).

Все отлично работает, но проблема вместо переопределения (заменить) <title> тег добавляется в голову. Это не меняет добавление. Пожалуйста, кто-нибудь, помогите мне решить эту проблему.

0

Решение

Для любого, кто придет к этому вопросу в будущем: эта функциональность может быть реализована с помощью Yoast SEO плагин.

тем не мение, если вы все еще хотите сделать это сами ….

Для того, чтобы изменить название, а не wp_head хук, вам нужно использовать фильтры, которые на самом деле позволяют модифицировать название: wp_title

И вы можете / должны использовать wp_head чтобы добавлять мета-описание (см. документы здесь: http://codex.wordpress.org/Meta_Tags_in_WordPress)

Также обратите внимание есть более простые способы получить заголовок страницы, упомянутый ниже …

Для заголовка ваш код будет выглядеть примерно так:

function changeTitle($title, $sep, $seplocation){
global $wpdb;

// NOTE: This is the HARD way to get the page title, and is unreliable...
$cur_url = $_SERVER['REQUEST_URI'];
$basename = pathinfo($cur_url);
$ebasename = $basename['filename'];

if(is_numeric($ebasename)) {
$url = explode('/', $basename['dirname']);
$basename = explode('.', $url[count($url)-2]);
$ebasename = $basename[0];
}

$pageName = $ebasename;

// NOTE: Why not get pagename this way?
global $post;
$pageName = $post->post_title;

// or if you need the slug...
$pageName = $post->post_slug;

$arraylist_subcat  = array("car","bike","boat","xxxx","yyyy","zzz","mmmm");
$arraylist_maincat = array("aus","ind","usa","uae");$category_id = get_term_by('slug',$pageName, 'category');
$category_parentid  = get_term_by('id', $category_id->parent, 'category');
$parent_slug =  $category_parentid->slug;if ( is_page()) {
if ( in_array($pageName,$arraylist_maincat) ) {
$title = 'Browse  '.$pageName.' | Some txt title | mysite.com';
}
}

return $title;
}

add_action( 'wp_title', 'changeTitle', 10, 3 );
1

Другие решения

Других решений пока нет …