Support Forum

title tag issue with SEO Ultimate Plugin

DR drkknght
drkknght
Member

there actually used to be a post on this in the forum, but i can’t find it any more (it was at the former link: https://simple-press.com/support-forum/simplepress-version-4-3-0/title-tag-issue-with-seo-ultimate-plugin-how-to-fix/ )

 

i’m just looking for a way to have the forum’s title settings override those established in the Ultimate SEO plugin – which, by default, overwrite the forum “page” with just the singular title “forum” as it thinks its only one page.

 

in the previous discussion, there was a quick hack (likely no longer workable, but still) that would permit the pages to title properly – adding the post topic name, the page number, specific forum, etc.  

 

btw – the new SEO friendly meta description stuff works great!! 🙂

15 Answers

New Answer

MP Mr Papa
Mr Papa
Member

in 5.0, you should be able to force our title…  we tried it with several seo plugins, but obviously not all…

on forum – components – seo, do you have the override option on?

DR drkknght
drkknght
Member

hiya mr papa

 

i do have that selected.  if at all helpful, i have that selected, and the final four checkboxes (checkspheres?) filled in:

 

Include forum name in page/browser title
Include topic name in page/browser title
Exclude forum name in page/browser title on topic views only
Include non-forum page view names (ie profile, member list, etc) in page/browser title

 

and i am using SEO Ultimate

http://www.seodesignsolutions.com/wordpress-seo/

MP Mr Papa
Mr Papa
Member

well, the other user said he never did get this plugin working… does it work if you disable it as test?  not familiar with this one and dont recall any other reports though…

UN
Unknown
Member

unfortunately, it does not.

the URL that I posted above DID contain a fix for the previous version of SPF, however that topic (and one other relating to it) no longer seems to exist on these boards (it was actually in those threads that we discussed the new, and working wonderfully, meta description bit in the admin)

MP Mr Papa
Mr Papa
Member

so we need to narrow it down…

try temp switch to wp default theme… working?

if not disable all other plugins… working now?  if so,enable one by one until it breaks…

then we can try to understand it better…

DR drkknght
drkknght
Member

no theme and no plugin has a specific impact EXCEPT the SEO Ultimate plugin.  

 

the SEO ULtimate plugin DOES have a part in it that refers to rewriting titles that I’m sure is the culprit.  I believe part of the original fix involved changing code in the a SEO Ultimate php file that controlled rewriting the SEO.  (essentially, a “change all titles except on the forum” bit).  

 

If I could get at the original thread (https://simple-press.com/support-forum/simplepress-version-4-3-0/title-tag-issue-with-seo-ultimate-plugin-how-to-fix/) I might be able to leverage that same code…

MP Mr Papa
Mr Papa
Member

that forum was removed as that version is no longer supported… quite old topic…

can you look into the seo ultimate plugin and find the routine that does the rewriting? we might see something…

DR drkknght
drkknght
Member

if (class_exists(‘SU_Module’)) {

class SU_Titles extends SU_Module {

function get_module_title() { return __(‘Title Tag Rewriter’, ‘seo-ultimate’); }

function init() {

switch ($this->get_setting(‘rewrite_method’, ‘ob’)) {
case ‘filter’:
add_filter(‘wp_title’, array(&$this, ‘get_title’));
break;
case ‘ob’:
default:
add_action(‘template_redirect’, array(&$this, ‘before_header’), 0);
add_action(‘wp_head’, array(&$this, ‘after_header’), 1000);
break;
}

add_filter(‘su_postmeta_help’, array(&$this, ‘postmeta_help’), 10);
}

function get_admin_page_tabs() {
return array_merge(
array(
array(‘title’ => __(‘Default Formats’, ‘seo-ultimate’), ‘id’ => ‘su-default-formats’, ‘callback’ => ‘formats_tab’)
, array(‘title’ => __(‘Settings’, ‘seo-ultimate’), ‘id’ => ‘su-settings’, ‘callback’ => ‘settings_tab’)
)
, $this->get_meta_edit_tabs(array(
‘type’ => ‘textbox’
, ‘name’ => ‘title’
, ‘term_settings_key’ => ‘taxonomy_titles’
, ‘label’ => __(‘Title Tag’, ‘seo-ultimate’)
))
);
}

function formats_tab() {
echo “<table class=’form-table’>n”;
$this->textboxes($this->get_supported_settings(), $this->get_default_settings());
echo “</table>”;
}

function settings_tab() {
$this->admin_form_table_start();
$this->checkbox(‘terms_ucwords’, __(‘Convert lowercase category/tag names to title case when used in title tags.’, ‘seo-ultimate’), __(‘Title Tag Variables’, ‘seo-ultimate’));
$this->radiobuttons(‘rewrite_method’, array(
‘ob’ => __(‘Use output buffering — no configuration required, but slower (default)’, ‘seo-ultimate’)
, ‘filter’ => __(‘Use filtering — faster, but configuration required (see the “Settings Help” dropdown for details)’, ‘seo-ultimate’)
), __(‘Rewrite Method’, ‘seo-ultimate’));
$this->admin_form_table_end();
}

function get_default_settings() {

//We internationalize even non-text formats (like “{post} | {blog}”) to allow RTL languages to switch the order of the variables
return array(
‘title_home’ => __(‘{blog}’, ‘seo-ultimate’)
, ‘title_single’ => __(‘{post} | {blog}’, ‘seo-ultimate’)
, ‘title_page’ => __(‘{page} | {blog}’, ‘seo-ultimate’)
, ‘title_category’ => __(‘{category} | {blog}’, ‘seo-ultimate’)
, ‘title_tag’ => __(‘{tag} | {blog}’, ‘seo-ultimate’)
, ‘title_day’ => __(‘Archives for {month} {day}, {year} | {blog}’, ‘seo-ultimate’)
, ‘title_month’ => __(‘Archives for {month} {year} | {blog}’, ‘seo-ultimate’)
, ‘title_year’ => __(‘Archives for {year} | {blog}’, ‘seo-ultimate’)
, ‘title_author’ => __(‘Posts by {author} | {blog}’, ‘seo-ultimate’)
, ‘title_search’ => __(‘Search Results for {query} | {blog}’, ‘seo-ultimate’)
, ‘title_404’ => __(‘404 Not Found | {blog}’, ‘seo-ultimate’)
, ‘title_paged’ => __(‘{title} – Page {num}’, ‘seo-ultimate’)

, ‘terms_ucwords’ => true
, ‘rewrite_method’ => ‘ob’
);
}

function get_supported_settings() {
return array(
‘title_home’ => __(‘Blog Homepage Title’, ‘seo-ultimate’)
, ‘title_single’ => __(‘Post Title Format’, ‘seo-ultimate’)
, ‘title_page’ => __(‘Page Title Format’, ‘seo-ultimate’)
, ‘title_category’ => __(‘Category Title Format’, ‘seo-ultimate’)
, ‘title_tag’ => __(‘Tag Title Format’, ‘seo-ultimate’)
, ‘title_day’ => __(‘Day Archive Title Format’, ‘seo-ultimate’)
, ‘title_month’ => __(‘Month Archive Title Format’, ‘seo-ultimate’)
, ‘title_year’ => __(‘Year Archive Title Format’, ‘seo-ultimate’)
, ‘title_author’ => __(‘Author Archive Title Format’, ‘seo-ultimate’)
, ‘title_search’ => __(‘Search Title Format’, ‘seo-ultimate’)
, ‘title_404’ => __(‘404 Title Format’, ‘seo-ultimate’)
, ‘title_paged’ => __(‘Pagination Title Format’, ‘seo-ultimate’)
);
}

function get_title_format() {
if ($key = $this->get_current_page_type())
return $this->get_setting(“title_$key”);

return false;
}

function get_current_page_type() {
$pagetypes = $this->get_supported_settings();
unset($pagetypes[‘title_paged’]);

foreach ($pagetypes as $key => $title) {
$key = str_replace(‘title_’, ”, $key);
if (call_user_func(“is_$key”)) return $key;
}

return false;
}

function should_rewrite_title() {
return (!is_admin() && !is_feed());
}

function before_header() {
if ($this->should_rewrite_title()) ob_start(array(&$this, ‘change_title_tag’));
}

function after_header() {
if ($this->should_rewrite_title()) {

$handlers = ob_list_handlers();
if (count($handlers) > 0 && strcasecmp($handlers[count($handlers)-1], ‘SU_Titles::change_title_tag’) == 0)
ob_end_flush();
else
su_debug_log(__FILE__, __CLASS__, __FUNCTION__, __LINE__, “Other ob_list_handlers found:n”.print_r($handlers, true));
}
}

function change_title_tag($head) {

$title = $this->get_title();
if (!$title) return $head;

//Replace the old title with the new and return
return eregi_replace(‘<title>[^<]*</title>’, ‘<title>’.$title.'</title>’, $head);
}

function get_title() {

global $wp_query, $wp_locale;

//Custom post/page title?
if ($post_title = $this->get_postmeta(‘title’))
return htmlspecialchars($this->get_title_paged($post_title));

//Custom taxonomy title?
if (is_category() || is_tag() || is_tax()) {
$tax_titles = $this->get_setting(‘taxonomy_titles’);
if ($tax_title = $tax_titles[$wp_query->get_queried_object_id()])
return htmlspecialchars($this->get_title_paged($tax_title));
}

//Get format
if (!$this->should_rewrite_title()) return ”;
if (!($format = $this->get_title_format())) return ”;

//Load post/page titles
$post_id = 0;
$post_title = ”;
$parent_title = ”;
if (is_singular()) {
$post = $wp_query->get_queried_object();
$post_title = strip_tags( apply_filters( ‘single_post_title’, $post->post_title ) );
$post_id = $post->ID;

if ($parent = $post->post_parent) {
$parent = &get_post($parent);
$parent_title = strip_tags( apply_filters( ‘single_post_title’, $parent->post_title ) );
}
}

//Load date-based archive titles
if ($m = get_query_var(‘m’)) {
$year = substr($m, 0, 4);
$monthnum = intval(substr($m, 4, 2));
$daynum = intval(substr($m, 6, 2));
} else {
$year = get_query_var(‘year’);
$monthnum = get_query_var(‘monthnum’);
$daynum = get_query_var(‘day’);
}
$month = $wp_locale->get_month($monthnum);
$monthnum = zeroise($monthnum, 2);
$day = date(‘jS’, mktime(12,0,0,$monthnum,$daynum,$year));
$daynum = zeroise($daynum, 2);

//Load category titles
$cat_title = $cat_titles = $cat_desc = ”;
if (is_category()) {
$cat_title = single_cat_title(”, false);
$cat_desc = category_description();
} elseif (count($categories = get_the_category())) {
$cat_titles = su_lang_implode($categories, ‘name’);
usort($categories, ‘_usort_terms_by_ID’);
$cat_title = $categories[0]->name;
$cat_desc = category_description($categories[0]->term_id);
}
if (strlen($cat_title) && $this->get_setting(‘terms_ucwords’, true))
$cat_title = sustr::tclcwords($cat_title);

//Load tag titles
$tag_title = $tag_desc = ”;
if (is_tag()) {
$tag_title = single_tag_title(”, false);
$tag_desc = tag_description();

if ($this->get_setting(‘terms_ucwords’, true))
$tag_title = sustr::tclcwords($tag_title);
}

//Load author titles
if (is_author()) {
$author_obj = $wp_query->get_queried_object();
} elseif (is_singular()) {
global $authordata;
$author_obj = $authordata;
} else {
$author_obj = null;
}
if ($author_obj)
$author = array(
‘username’ => $author_obj->user_login
, ‘name’ => $author_obj->display_name
, ‘firstname’ => get_the_author_meta(‘first_name’, $author_obj->ID)
, ‘lastname’ => get_the_author_meta(‘last_name’, $author_obj->ID)
, ‘nickname’ => get_the_author_meta(‘nickname’, $author_obj->ID)
);
else
$author = array(
‘username’ => ”
, ‘name’ => ”
, ‘firstname’ => ”
, ‘lastname’ => ”
, ‘nickname’ => ”
);

$variables = array(
‘{blog}’ => get_bloginfo(‘name’)
, ‘{tagline}’ => get_bloginfo(‘description’)
, ‘{post}’ => $post_title
, ‘{page}’ => $post_title
, ‘{page_parent}’ => $parent_title
, ‘{category}’ => $cat_title
, ‘{categories}’ => $cat_titles
, ‘{category_description}’ => $cat_desc
, ‘{tag}’ => $tag_title
, ‘{tag_description}’ => $tag_desc
, ‘{tags}’ => su_lang_implode(get_the_tags($post_id), ‘name’, true)
, ‘{daynum}’ => $daynum
, ‘{day}’ => $day
, ‘{monthnum}’ => $monthnum
, ‘{month}’ => $month
, ‘{year}’ => $year
, ‘{author}’ => $author[‘name’]
, ‘{author_name}’ => $author[‘name’]
, ‘{author_username}’ => $author[‘username’]
, ‘{author_firstname}’ => $author[‘firstname’]
, ‘{author_lastname}’ => $author[‘lastname’]
, ‘{author_nickname}’ => $author[‘nickname’]
, ‘{query}’ => su_esc_attr(get_search_query())
, ‘{ucquery}’ => su_esc_attr(ucwords(get_search_query()))
, ‘{url_words}’ => $this->get_url_words($_SERVER[‘REQUEST_URI’])
);

$title = str_replace(array_keys($variables), array_values($variables), htmlspecialchars($format));

return $this->get_title_paged($title);
}

function get_title_paged($title) {

global $wp_query, $numpages;

if (is_paged() || get_query_var(‘page’)) {

if (is_paged()) {
$num = absint(get_query_var(‘paged’));
$max = absint($wp_query->max_num_pages);
} else {
$num = absint(get_query_var(‘page’));

if (is_singular()) {
$post = $wp_query->get_queried_object();
$max = count(explode(‘<!–nextpage–>’, $post->post_content));
} else
$max = ”;
}

return str_replace(
array(‘{title}’, ‘{num}’, ‘{max}’),
array( $title, $num, $max ),
$this->get_setting(‘title_paged’));
} else
return $title;
}

function get_url_words($url) {

//Remove any extensions (.html, .php, etc)
$url = preg_replace(‘|\.[a-zA-Z]{1,4}$|’, ‘ ‘, $url);

//Turn slashes to >>
$url = str_replace(‘/’, ‘ » ‘, $url);

//Remove word separators
$url = str_replace(array(‘.’, ‘/’, ‘-‘), ‘ ‘, $url);

//Capitalize the first letter of every word
$url = explode(‘ ‘, $url);
$url = array_map(‘trim’, $url);
$url = array_map(‘ucwords’, $url);
$url = implode(‘ ‘, $url);
$url = trim($url);

return $url;
}

function postmeta_fields($fields) {
$fields[’10|title’] = $this->get_postmeta_textbox(‘title’, __(‘Title Tag:’, ‘seo-ultimate’));
return $fields;
}

function postmeta_help($help) {
$help[] = __(‘<strong>Title Tag</strong> — The exact contents of the <title> tag. The title appears in visitors’ title bars and in search engine result titles. If this box is left blank, then the <a href=”admin.php?page=su-titles” target=”_blank”>default post/page titles</a> are used.’, ‘seo-ultimate’);
return $help;
}

DR drkknght
drkknght
Member

sorry if that’s a jumbled mess — i tried to upload just the titles.php file (even sneakily renaming it titles.jpg) but was now allowed.

DR drkknght
drkknght
Member

quite so 🙂

 

i don’t remember the exact fix (the discussion was back in october 2011) but i BELIEVE that somewhere in the “mouthful” file, there was a line of added code that essentially said “rewrite titles unless /forum/”.  …but in proper PHP-speak 🙂

MP Mr Papa
Mr Papa
Member

nasty.. ob flush stuff… not cool…

you could try this:

function should_rewrite_title() {
return (!is_admin() && !is_feed() && !sp_is_forumpage());
}
DR drkknght
drkknght
Member

mr papa, you’re a genius!  that did it 🙂