Извините, если мой вопрос был базовым или глупым, но, пожалуйста, помогите мне решить эту проблему. Я пытаюсь изменить <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>
тег добавляется в голову. Это не меняет добавление. Пожалуйста, кто-нибудь, помогите мне решить эту проблему.
Для любого, кто придет к этому вопросу в будущем: эта функциональность может быть реализована с помощью 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 );
Других решений пока нет …