Изменение wp_title из моего плагина Wordpress - PullRequest
2 голосов
/ 24 октября 2011

почти закончил мой плагин для агента по недвижимости, Я просмотрел сайт в течение 404 и т. Д. И заметил, что мои страницы сведений о свойствах были spider'd, в котором все 45 заголовков страниц были: (подробности | sitename) (заголовки страниц отображаются динамически из идентификатора, передаваемого через строку запроса)

Теперь у меня исправлены мои хорошие URL, URL выглядят так ...

wpsite.com/details/20043/property+for+sale+in+this+area

В котором ...

  • пропид = 20043
  • propname = property + for + sale + in + this + area

оба являются значениями строки запроса, которые используются для перезаписи URL.

'query_vars' => array('propid', 'propname'),
'rules' => 
array( '(.+?)/([^/]+)/([^/]+)/?$' => 'index.php?pagename=$matches[1]&propid=$matches[2]&propname=$matches[3]' )
);

Теперь, когда загружается страница сведений о свойствах, я пытаюсь подключиться к фильтру WordPress. wp_title, но это не работает так, как я ожидал ..

это код, который я использую для генерации заголовков

function wp_myplugin_property_title()
{
    $wp_acquaint_id = get_option("wp_system_id");
    $propid = get_query_var('propid');
    if(isset($propid)){
        $seotitle = wp_myplugin_seo_title($propid);
    }else{
        $seotitle = "TEST Title";   
    }
    return $seotitle;   
}

if( is_page('details') ){
    add_filter('wp_title', wp_myplugin_property_title, 100);
}

функция, используемая в этой функции: wp_myplugin_seo_title ($ propid) генерирует фактический заголовок, который я хочу использовать ...

function wp_myplugin_seo_title($propid)
{
    $wp_acquaint_id = get_option("wp_acquaint_id");
    $xml = wp_myplugin_get_property($propid);
    foreach($xml->PropertiesDataSet->Properties as $node) {
        include('xml_loop.php');

        if($bedrooms==0){ }else{ $seo_title.= $bedrooms." bedroom "; }

        $seo_title.= wp_myplugin_get_property_type($type_id)." "; //ie:flat
        $seo_title.= str_replace("(","",$street);
        $seo_title.= " ".$town." | ".get_bloginfo('name');
    }
    return $seo_title;
}

Я обнаружил, что с помощью if (is_page ()) вокруг фильтра заголовок страницы не изменяется, а если я удаляю is_page, заголовок страницы с реквизитом реквизита работает нормально, но !!!

в то время как на странице списка свойств заголовок страницы циклически перебирает все свойства на этой странице и создает заголовок страницы длиной около 1000 символов ..!

Я искал лучший способ справиться с этим, но любая помощь была бы великолепна ..

Приветствия

Marty

ps: в настоящее время работает WordPress SEO от Yoast! вот почему я установил приоритет как 100 в add_filter, просто чтобы посмотреть, перезапишет ли он заголовок ..

1 Ответ

2 голосов
/ 24 октября 2011

Использование is_page в functions.php не работает, поскольку он запускается до того, как wp узнает, какую страницу он будет отображать, или даже если это начальная страница. Вставьте is_page () внутри функции, и она должна работать. Как:

function wp_myplugin_property_title()
{ 
  if( is_page('details') ){
    $wp_acquaint_id = get_option("wp_system_id");
    $propid = get_query_var('propid');
    if(isset($propid)){
        $seotitle = wp_myplugin_seo_title($propid);
    }else{
        $seotitle = "TEST Title";   
    }
    return $seotitle;   
  }
}


add_filter('wp_title', wp_myplugin_property_title, 100);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...