All in One SEO Pack - Version 2.2.6

Version Description

Download this release

Release Info

Developer pbaylies
Plugin Icon 128x128 All in One SEO Pack
Version 2.2.6
Comparing to
See all releases

Code changes from version 2.2.5.1 to 2.2.6

aioseop_class.php CHANGED
@@ -75,25 +75,34 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
75
  "no_paged_canonical_links"=> __( "Checking this option will set the Canonical URL for all paginated content to the first page.", 'all_in_one_seo_pack'),
76
  "customize_canonical_links"=> __( "Checking this option will allow you to customize Canonical URLs for specific posts.", 'all_in_one_seo_pack'),
77
  "can_set_protocol" => __( "Set protocol for canonical URLs.", 'all_in_one_seo_pack' ),
78
- "use_original_title" => __( "Use wp_title to set the title; disable this option if you run into conflicts with the title being set by your theme or another plugin.", 'all_in_one_seo_pack' ),
79
  "do_log" => __( "Check this and All in One SEO Pack will create a log of important events (all_in_one_seo_pack.log) in its plugin directory which might help debugging. Make sure this directory is writable.", 'all_in_one_seo_pack' ),
80
  "home_title" => __( "As the name implies, this will be the Meta Title of your homepage. This is independent of any other option. If not set, the default Site Title (found in WordPress under Settings, General, Site Title) will be used.", 'all_in_one_seo_pack' ),
81
  "home_description" => __( "This will be the Meta Description for your homepage. This is independent of any other option. The default is no Meta Description at all if this is not set.", 'all_in_one_seo_pack' ),
82
  "home_keywords" => __( "Enter a comma separated list of your most important keywords for your site that will be written as Meta Keywords on your homepage. Don\'t stuff everything in here.", 'all_in_one_seo_pack' ),
 
83
  "togglekeywords" => __( "This option allows you to toggle the use of Meta Keywords throughout the whole of the site.", 'all_in_one_seo_pack' ),
84
  "use_categories" => __( "Check this if you want your categories for a given post used as the Meta Keywords for this post (in addition to any keywords you specify on the Edit Post screen).", 'all_in_one_seo_pack' ),
85
  "use_tags_as_keywords" => __( "Check this if you want your tags for a given post used as the Meta Keywords for this post (in addition to any keywords you specify on the Edit Post screen).", 'all_in_one_seo_pack' ),
86
- "dynamic_postspage_keywords"=> __( "Check this if you want your keywords on your Posts page (set in WordPress under Settings, Reading, Front Page Displays) to be dynamically generated from the keywords of the posts showing on that page. If unchecked, it will use the keywords set in the edit page screen for the posts page.", 'all_in_one_seo_pack'),
87
  "rewrite_titles" => __( "Note that this is all about the title tag. This is what you see in your browser's window title bar. This is NOT visible on a page, only in the title bar and in the source code. If enabled, all page, post, category, search and archive page titles get rewritten. You can specify the format for most of them. For example: Using the default post title format below, Rewrite Titles will write all post titles as 'Post Title | Blog Name'. If you have manually defined a title using All in One SEO Pack, this will become the title of your post in the format string.", 'all_in_one_seo_pack' ),
88
  "cap_titles" => __( "Check this and Search Page Titles and Tag Page Titles will have the first letter of each word capitalized.", 'all_in_one_seo_pack' ),
89
  "cap_cats" => __( "Check this and Category Titles will have the first letter of each word capitalized.", 'all_in_one_seo_pack'),
 
 
 
 
 
 
 
 
 
 
90
  "page_title_format" =>
91
  __( "This controls the format of the title tag for Pages.<br />The following macros are supported:", 'all_in_one_seo_pack' )
92
  . '<ul><li>' . __( '%blog_title% - Your blog title', 'all_in_one_seo_pack' ) . '</li><li>' .
93
  __( '%blog_description% - Your blog description', 'all_in_one_seo_pack' ) . '</li><li>' .
94
  __( '%page_title% - The original title of the page', 'all_in_one_seo_pack' ) . '</li><li>' .
95
- __( '%category_title% - The (main) category of the page', 'all_in_one_seo_pack' ) . '</li><li>' .
96
- __( '%category% - Alias for %category_title%', 'all_in_one_seo_pack' ) . '</li><li>' .
97
  __( "%page_author_login% - This page's author' login", 'all_in_one_seo_pack' ) . '</li><li>' .
98
  __( "%page_author_nicename% - This page's author' nicename", 'all_in_one_seo_pack' ) . '</li><li>' .
99
  __( "%page_author_firstname% - This page's author' first name (capitalized)", 'all_in_one_seo_pack' ) . '</li><li>' .
@@ -309,11 +318,13 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
309
  "home_title"=> Array(
310
  'name' => __( 'Home Title:', 'all_in_one_seo_pack' ),
311
  'default' => null, 'type' => 'textarea', 'sanitize' => 'text',
312
- 'count' => true, 'rows' => 1, 'cols' => 60 ),
 
313
  "home_description"=> Array(
314
  'name' => __( 'Home Description:', 'all_in_one_seo_pack' ),
315
  'default' => '', 'type' => 'textarea', 'sanitize' => 'text',
316
- 'count' => true, 'cols' => 80, 'rows' => 2 ),
 
317
  "togglekeywords" => Array(
318
  'name' => __( 'Use Keywords:', 'all_in_one_seo_pack' ),
319
  'default' => 0,
@@ -324,7 +335,14 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
324
  "home_keywords"=> Array(
325
  'name' => __( 'Home Keywords (comma separated):', 'all_in_one_seo_pack' ),
326
  'default' => null, 'type' => 'textarea', 'sanitize' => 'text',
327
- 'condshow' => Array( "aiosp_togglekeywords" => 0 ) ),
 
 
 
 
 
 
 
328
  "can"=> Array(
329
  'name' => __( 'Canonical URLs:', 'all_in_one_seo_pack' ),
330
  'default' => 1),
@@ -371,6 +389,10 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
371
  'name' => __( 'Capitalize Titles:', 'all_in_one_seo_pack' ), 'default' => 1),
372
  "cap_cats"=> Array(
373
  'name' => __( 'Capitalize Category Titles:', 'all_in_one_seo_pack' ), 'default' => 1),
 
 
 
 
374
  "page_title_format"=> Array(
375
  'name' => __( 'Page Title Format:', 'all_in_one_seo_pack' ),
376
  'type' => 'text', 'default' => '%page_title% | %blog_title%',
@@ -422,6 +444,11 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
422
  'initial_options' => Array( 'on' => __( 'Enabled', 'all_in_one_seo_pack' ),
423
  0 => __( 'Disabled', 'all_in_one_seo_pack' ) )
424
  ),
 
 
 
 
 
425
  "cpostadvanced" => Array(
426
  'name' => __( 'Enable Advanced Options:', 'all_in_one_seo_pack' ),
427
  'default' => 0, 'type' => 'radio',
@@ -430,11 +457,6 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
430
  'label' => null,
431
  'condshow' => Array( "aiosp_enablecpost" => 'on' )
432
  ),
433
- "cpostactive" => Array(
434
- 'name' => __( 'SEO on only these post types:', 'all_in_one_seo_pack' ),
435
- 'type' => 'multicheckbox', 'default' => array('post', 'page'),
436
- 'condshow' => Array( 'aiosp_enablecpost' => 'on', 'aiosp_cpostadvanced' => 'on' )
437
- ),
438
  "cpostnoindex" => Array(
439
  'name' => __( 'Default to NOINDEX:', 'all_in_one_seo_pack' ),
440
  'type' => 'multicheckbox', 'default' => array(),
@@ -570,7 +592,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
570
  'default' => 1,
571
  'condshow' => Array( "aiosp_togglekeywords" => 0 ) ),
572
  "dynamic_postspage_keywords"=> Array(
573
- 'name' => __( 'Dynamically Generate Keywords for Posts Page:', 'all_in_one_seo_pack' ),
574
  'default' => 1,
575
  'condshow' => Array( "aiosp_togglekeywords" => 0 ) ),
576
  "category_noindex"=> Array(
@@ -661,7 +683,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
661
  <script>
662
  jQuery(document).ready(function() {
663
  jQuery("#aiosp_title_wrapper").bind("input", function() {
664
- jQuery("#aioseop_snippet_title").text(jQuery("#aiosp_title_wrapper input").val().replace(/<(?:.|\n)*?>/gm, ""));
665
  });
666
  jQuery("#aiosp_description_wrapper").bind("input", function() {
667
  jQuery("#aioseop_snippet_description").text(jQuery("#aiosp_description_wrapper textarea").val().replace(/<(?:.|\n)*?>/gm, ""));
@@ -671,6 +693,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
671
  <div class="preview_snippet"><div id="aioseop_snippet"><h3><a>%s</a></h3><div><div><cite id="aioseop_snippet_link">%s</cite></div><span id="aioseop_snippet_description">%s</span></div></div></div>' ),
672
  'title' => Array( 'name' => __( 'Title', 'all_in_one_seo_pack' ), 'type' => 'text', 'count' => true, 'size' => 60 ),
673
  'description' => Array( 'name' => __( 'Description', 'all_in_one_seo_pack' ), 'type' => 'textarea', 'count' => true, 'cols' => 80, 'rows' => 2 ),
 
674
  'keywords' => Array( 'name' => __( 'Keywords (comma separated)', 'all_in_one_seo_pack' ), 'type' => 'text' ),
675
  'custom_link' => Array( 'name' => __( 'Custom Canonical URL', 'all_in_one_seo_pack' ), 'type' => 'text', 'size' => 60 ),
676
  'noindex' => Array( 'name' => __( "Robots Meta NOINDEX", 'all_in_one_seo_pack' ), 'default' => '' ),
@@ -698,7 +721,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
698
  'home' => Array(
699
  'name' => __( 'Home Page Settings', 'all_in_one_seo_pack' ),
700
  'help_link' => 'http://semperplugins.com/documentation/home-page-settings/',
701
- 'options' => Array( 'home_title', 'home_description', 'home_keywords' )
702
  ),
703
  'keywords' => Array(
704
  'name' => __( 'Keyword Settings', 'all_in_one_seo_pack' ),
@@ -708,7 +731,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
708
  'title' => Array(
709
  'name' => __( 'Title Settings', 'all_in_one_seo_pack' ),
710
  'help_link' => 'http://semperplugins.com/documentation/title-settings/',
711
- 'options' => Array( "rewrite_titles", "force_rewrites", "cap_titles", "cap_cats", "page_title_format", "post_title_format", "category_title_format", "archive_title_format", "date_title_format", "author_title_format",
712
  "tag_title_format", "search_title_format", "description_format", "404_title_format", "paged_format" )
713
  ),
714
  'cpt' => Array(
@@ -764,7 +787,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
764
  if ( !empty( $info ) )
765
  return $info;
766
  global $post, $aioseop_options, $wp_query;
767
- $title = $url = $description = $term = '';
768
  $p = $post; $w = $wp_query;
769
  if ( !is_object( $post ) ) $post = $this->get_queried_object();
770
  if ( empty( $this->meta_opts ) )
@@ -775,7 +798,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
775
  if ( is_object( $post ) ) {
776
  $opts = $this->meta_opts;
777
  $post_id = $p->ID;
778
- if (! $post->post_modified_gmt != '' )
779
  $wp_query = new WP_Query( array( 'p' => $post_id, 'post_type' => $post->post_type ) );
780
  if ( $post->post_type == 'page' )
781
  $wp_query->is_page = true;
@@ -804,11 +827,15 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
804
  if ( is_page() )
805
  $title_format = $aioseop_options['aiosp_page_title_format'];
806
  elseif ( is_single() || is_attachment() )
807
- $title_format = $this->get_post_title_format();
808
  }
809
  if ( empty( $title_format ) ) {
810
  $title_format = '%post_title%';
811
  }
 
 
 
 
812
  } else if ( is_object( $term ) ) {
813
  if ( $_GET['taxonomy'] == 'category' ) {
814
  query_posts( Array( 'cat' => $_GET['tag_ID'] ) );
@@ -845,9 +872,10 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
845
  $keywords = $this->apply_cf_fields( $keywords );
846
  $keywords = apply_filters( 'aioseop_keywords', $keywords );
847
 
 
 
848
  wp_reset_postdata();
849
  $wp_query = $w; $post = $p;
850
- $info = Array( 'title' => $title, 'description' => $description, 'keywords' => $keywords, 'url' => $url, 'title_format' => $title_format );
851
  return $info;
852
  }
853
 
@@ -865,15 +893,21 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
865
  if ( $this->strlen( $description ) > 156 ) $description = $this->trim_excerpt_without_filters( $description, 156 ) . '...';
866
  $extra_title_len = 0;
867
  if ( empty( $title_format ) ) {
868
- $title = '<span id="aioseop_snippet_title">' . esc_attr( wp_strip_all_tags( $title ) ) . '</span>';
869
  } else {
870
  if ( strpos( $title_format, '%blog_title%' ) !== false ) $title_format = str_replace( '%blog_title%', get_bloginfo( 'name' ), $title_format );
871
  $title_format = $this->apply_cf_fields( $title_format );
872
- $replace_title = '<span id="aioseop_snippet_title">' . esc_attr( wp_strip_all_tags( $title ) ) . '</span>';
873
  if ( strpos( $title_format, '%post_title%' ) !== false ) $title_format = str_replace( '%post_title%', $replace_title, $title_format );
874
  if ( strpos( $title_format, '%page_title%' ) !== false ) $title_format = str_replace( '%page_title%', $replace_title, $title_format );
875
- if ( strpos( $title_format, '%category_title%' ) !== false ) $title_format = str_replace( '%category_title%', $replace_title, $title_format );
876
- if ( strpos( $title_format, '%taxonomy_title%' ) !== false ) $title_format = str_replace( '%taxonomy_title%', $replace_title, $title_format );
 
 
 
 
 
 
877
  if ( strpos( $title_format, '%taxonomy_description%' ) !== false ) $title_format = str_replace( '%taxonomy_description%', $description, $title_format );
878
 
879
  $title_format = preg_replace( '/%([^%]*?)%/', '', $title_format );
@@ -1034,8 +1068,6 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
1034
  . '<ul><li>' . __( '%blog_title% - Your blog title', 'all_in_one_seo_pack' ) . '</li><li>' .
1035
  __( '%blog_description% - Your blog description', 'all_in_one_seo_pack' ) . '</li><li>' .
1036
  __( '%post_title% - The original title of the post', 'all_in_one_seo_pack' ) . '</li><li>' .
1037
- __( '%category_title% - The (main) category of the post', 'all_in_one_seo_pack' ) . '</li><li>' .
1038
- __( '%category% - Alias for %category_title%', 'all_in_one_seo_pack' ) . '</li><li>' .
1039
  __( "%post_author_login% - This post's author' login", 'all_in_one_seo_pack' ) . '</li><li>' .
1040
  __( "%post_author_nicename% - This post's author' nicename", 'all_in_one_seo_pack' ) . '</li><li>' .
1041
  __( "%post_author_firstname% - This post's author' first name (capitalized)", 'all_in_one_seo_pack' ) . '</li><li>' .
@@ -1323,7 +1355,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
1323
  if ( empty( $aioseop_options['aiosp_enablecpost'] ) ) {
1324
  $wp_post_types = get_post_types( Array( '_builtin' => true ) ); // don't display meta if SEO isn't enabled on custom post types -- pdb
1325
  if( is_singular() && !in_array( $post_type, $wp_post_types ) && !is_front_page() ) return false;
1326
- } elseif ( !empty( $aioseop_options['aiosp_cpostadvanced'] ) ) {
1327
  $wp_post_types = $aioseop_options['aiosp_cpostactive'];
1328
  if ( is_singular() && !in_array( $post_type, $wp_post_types ) && !is_front_page() ) return false;
1329
  if ( is_post_type_archive() && !is_post_type_archive( $wp_post_types ) ) return false;
@@ -1411,7 +1443,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
1411
  function is_static_front_page() {
1412
  if ( isset( $this->is_front_page ) && $this->is_front_page !== null ) return $this->is_front_page;
1413
  $post = $this->get_queried_object();
1414
- $this->is_front_page = ( get_option( 'show_on_front' ) == 'page' && is_page() && $post->ID == get_option( 'page_on_front' ) );
1415
  return $this->is_front_page;
1416
  }
1417
 
@@ -1419,7 +1451,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
1419
  static $is_posts_page = null;
1420
  if ( $is_posts_page !== null ) return $is_posts_page;
1421
  $post = $this->get_queried_object();
1422
- $is_posts_page = ( get_option( 'show_on_front' ) == 'page' && is_home() && $post->ID == get_option( 'page_for_posts' ) );
1423
  return $is_posts_page;
1424
  }
1425
 
@@ -1612,7 +1644,7 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
1612
  if ( is_author() && $this->show_page_description() ) {
1613
  $description = $this->internationalize( get_the_author_meta( 'description' ) );
1614
  } else if ( is_front_page() ) {
1615
- $description = trim( stripslashes( $this->internationalize( $aioseop_options['aiosp_home_description'] ) ) );
1616
  } else if ( function_exists( 'woocommerce_get_page_id' ) && is_post_type_archive( 'product' ) && ( $post_id = woocommerce_get_page_id( 'shop' ) ) && ( $post = get_post( $post_id ) ) ) {
1617
  $description = $this->get_post_description( $post );
1618
  $description = $this->apply_cf_fields( $description );
@@ -1668,11 +1700,17 @@ class All_in_One_SEO_Pack extends All_in_One_SEO_Pack_Module {
1668
  global $post;
1669
  $opts = $this->meta_opts;
1670
  if ( ( ( is_front_page() && $aioseop_options['aiosp_home_keywords'] && !$this->is_static_posts_page() ) || $this->is_static_front_page() ) ) {
1671
- $keywords = trim( $this->internationalize( $aioseop_options['aiosp_home_keywords'] ) );
1672
- } elseif ( empty( $aioseop_options['aiosp_dynamic_postspage_keywords'] ) && ($this->is_static_posts_page() || is_archive() || is_post_type_archive() ) ) {
1673
- $keywords = stripslashes( $this->internationalize( $opts["aiosp_keywords"] ) ); // and if option = use page set keywords instead of keywords from recent posts
 
 
 
 
1674
  } elseif ( ( $blog_page = $this->get_blog_page( $post ) ) && empty( $aioseop_options['aiosp_dynamic_postspage_keywords'] ) ) {
1675
- $keywords = stripslashes( $this->internationalize( get_post_meta( $blog_page->ID, "_aioseop_keywords", true ) ) );
 
 
1676
  } else {
1677
  $keywords = $this->get_all_keywords();
1678
  }
@@ -2277,6 +2315,14 @@ EOF;
2277
  default:
2278
  return false;
2279
  }
 
 
 
 
 
 
 
 
2280
  } elseif ( ( $query->is_single || $query->is_page ) && $haspost ) {
2281
  $post = $query->posts[0];
2282
  $link = get_permalink( $post->ID );
@@ -2299,17 +2345,6 @@ EOF;
2299
  get_query_var( 'monthnum' ) );
2300
  } elseif ( $query->is_year && $haspost ) {
2301
  $link = get_year_link( get_query_var( 'year' ) );
2302
- } elseif ( $query->is_home ) {
2303
- if ( (get_option( 'show_on_front' ) == 'page' ) &&
2304
- ( $pageid = get_option( 'page_for_posts' ) ) ) {
2305
- $link = get_permalink( $pageid );
2306
- } else {
2307
- if ( function_exists( 'icl_get_home_url' ) ) {
2308
- $link = icl_get_home_url();
2309
- } else {
2310
- $link = trailingslashit( home_url() );
2311
- }
2312
- }
2313
  } elseif ( $query->is_tax && $haspost ) {
2314
  $taxonomy = get_query_var( 'taxonomy' );
2315
  $term = get_query_var( 'term' );
@@ -2359,7 +2394,14 @@ EOF;
2359
  }
2360
  return $link;
2361
  }
2362
-
 
 
 
 
 
 
 
2363
  function show_page_description() {
2364
  global $aioseop_options;
2365
  if ( !empty( $aioseop_options['aiosp_hide_paginated_descriptions'] ) ) {
@@ -2372,11 +2414,14 @@ EOF;
2372
 
2373
  function get_post_description( $post ) {
2374
  global $aioseop_options;
2375
-
2376
  if ( !$this->show_page_description() )
2377
  return '';
2378
 
2379
  $description = trim( stripslashes( $this->internationalize( get_post_meta( $post->ID, "_aioseop_description", true ) ) ) );
 
 
 
2380
  if ( !$description ) {
2381
  if ( empty( $aioseop_options["aiosp_skip_excerpt"] ) )
2382
  $description = $this->trim_excerpt_without_filters_full_length( $this->internationalize( $post->post_excerpt ) );
@@ -2414,7 +2459,8 @@ EOF;
2414
  if ( $post === null )
2415
  $post = $GLOBALS["post"];
2416
  $blog_page = $this->get_blog_page();
2417
- if ( $this->is_static_front_page() )
 
2418
  $description = trim( stripslashes( $this->internationalize( $aioseop_options['aiosp_home_description'] ) ) );
2419
  elseif ( !empty( $blog_page ) )
2420
  $description = $this->get_post_description( $blog_page );
@@ -2446,19 +2492,29 @@ EOF;
2446
  if ( function_exists( 'polyglot_filter' ) )
2447
  $in = polyglot_filter( $in );
2448
 
2449
- if ( function_exists( 'qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) )
2450
  $in = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in );
 
 
 
 
 
2451
 
2452
  return apply_filters( 'localization', $in );
2453
  }
2454
 
2455
  /** @return The original title as delivered by WP (well, in most cases) */
2456
- function get_original_title( $sep = '', $echo = false, $seplocation = '' ) {
2457
  global $aioseop_options;
2458
  if ( !empty( $aioseop_options['aiosp_use_original_title'] ) ) {
2459
  $has_filter = has_filter( 'wp_title', Array( $this, 'wp_title' ) );
2460
  if ( $has_filter !== false )
2461
  remove_filter( 'wp_title', Array( $this, 'wp_title' ), $has_filter );
 
 
 
 
 
2462
  $title = wp_title( $sep, $echo, $seplocation );
2463
  if ( $has_filter !== false )
2464
  add_filter( 'wp_title', Array( $this, 'wp_title' ), $has_filter );
@@ -2560,8 +2616,7 @@ EOF;
2560
  if ( strpos( $title, '%category_description%' ) !== false ) $title = str_replace( '%category_description%', $category_description, $title );
2561
  if ( strpos( $title, '%blog_title%' ) !== false ) $title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $title );
2562
  if ( strpos( $title, '%blog_description%' ) !== false ) $title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $title );
2563
- $title = trim( wp_strip_all_tags( $title ) );
2564
- $title = str_replace( Array( '"', "\r\n", "\n" ), Array( '&quot;', ' ', ' ' ), $title );
2565
  return $this->paged_title( $title );
2566
  }
2567
 
@@ -2590,20 +2645,21 @@ EOF;
2590
  return $this->apply_tax_title_format( $name, $desc, $tax );
2591
  }
2592
 
2593
- function get_post_title_format( $title_type = 'post' ) {
2594
  global $aioseop_options;
2595
  if ( ( $title_type != 'post' ) && ( $title_type != 'archive' ) ) return false;
2596
  $title_format = "%{$title_type}_title% | %blog_title%";
2597
  if ( isset( $aioseop_options["aiosp_{$title_type}_title_format"] ) )
2598
  $title_format = $aioseop_options["aiosp_{$title_type}_title_format"];
2599
- if( !empty( $aioseop_options['aiosp_enablecpost'] ) && !empty( $aioseop_options['aiosp_cpostadvanced'] ) && !empty( $aioseop_options['aiosp_cpostactive'] ) ) {
2600
  $wp_post_types = $aioseop_options['aiosp_cpostactive'];
2601
  if ( !empty( $aioseop_options["aiosp_cposttitles"] ) ) {
2602
  if ( ( ( $title_type == 'archive' ) && is_post_type_archive( $wp_post_types ) && $prefix = "aiosp_{$title_type}_" ) ||
2603
- ( ( $title_type == 'post' ) && is_singular( $wp_post_types ) && $prefix = "aiosp_" ) ) {
2604
- $post_type = get_post_type();
2605
- if ( !empty( $aioseop_options["{$prefix}{$post_type}_title_format"] ) )
2606
- $title_format = $aioseop_options["{$prefix}{$post_type}_title_format"];
 
2607
  }
2608
  }
2609
  }
@@ -2628,7 +2684,7 @@ EOF;
2628
  } else {
2629
  $post = $p;
2630
  }
2631
- $title_format = $this->get_post_title_format();
2632
  if ( !empty( $post ) )
2633
  $authordata = get_userdata( $post->post_author );
2634
  else
@@ -2639,14 +2695,15 @@ EOF;
2639
  return $title;
2640
  }
2641
 
2642
- function apply_page_title_format( $title, $p = null ) {
2643
  global $aioseop_options;
2644
  if ( $p === null ) {
2645
  global $post;
2646
  } else {
2647
  $post = $p;
2648
  }
2649
- $title_format = $aioseop_options['aiosp_page_title_format'];
 
2650
  if ( !empty( $post ) )
2651
  $authordata = get_userdata( $post->post_author );
2652
  else
@@ -2669,7 +2726,22 @@ EOF;
2669
  global $s, $STagging;
2670
  $opts = $this->meta_opts;
2671
  if ( is_front_page() ) {
2672
- $title = $this->internationalize( $aioseop_options['aiosp_home_title'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2673
  if (empty( $title ) )
2674
  $title = $this->internationalize( get_option( 'blogname' ) ) . ' | ' . $this->internationalize( get_bloginfo( 'description' ) );
2675
  return $this->paged_title( $title );
@@ -2684,6 +2756,8 @@ EOF;
2684
  } else if ( is_page() || $this->is_static_posts_page() || ( is_home() && !$this->is_static_posts_page() ) ) {
2685
  if ( $post === null ) return false;
2686
  if ( ( $this->is_static_front_page() ) && ( $home_title = $this->internationalize( $aioseop_options['aiosp_home_title'] ) ) ) {
 
 
2687
  //home title filter
2688
  return apply_filters( 'aioseop_home_page_title', $home_title );
2689
  } else {
@@ -2722,11 +2796,10 @@ EOF;
2722
  } else if ( is_single() ) {
2723
  // we're not in the loop :(
2724
  if ( $post === null ) return false;
2725
- $categories = get_the_category();
2726
  $category = '';
2727
- if ( count( $categories ) > 0 ) {
2728
- $category = $categories[0]->cat_name;
2729
- }
2730
  $title = $this->internationalize( get_post_meta( $post->ID, "_aioseop_title", true ) );
2731
  if ( !$title ) {
2732
  $title = $this->internationalize( get_post_meta( $post->ID, "title_tag", true ) );
@@ -2933,16 +3006,17 @@ EOF;
2933
 
2934
  function get_all_categories( $id = 0 ) {
2935
  $keywords = Array();
2936
- $categories = get_the_category( $id );
2937
- foreach ( $categories as $category )
2938
- $keywords[] = $this->internationalize( $category->cat_name );
 
2939
  return $keywords;
2940
  }
2941
 
2942
  function get_all_tags( $id = 0 ) {
2943
  $keywords = Array();
2944
  $tags = get_the_tags( $id );
2945
- if ( $tags && is_array( $tags) )
2946
  foreach ( $tags as $tag )
2947
  $keywords[] = $this->internationalize( $tag->name );
2948
  // Ultimate Tag Warrior integration
@@ -2974,7 +3048,7 @@ EOF;
2974
  $keywords = array();
2975
  $opts = $this->meta_opts;
2976
  if ( !empty( $opts["aiosp_keywords"] ) ) {
2977
- $traverse = $this->keyword_string_to_list( $opts["aiosp_keywords"] );
2978
  if ( !empty( $traverse ) )
2979
  foreach ( $traverse as $keyword ) $keywords[] = $keyword;
2980
  }
75
  "no_paged_canonical_links"=> __( "Checking this option will set the Canonical URL for all paginated content to the first page.", 'all_in_one_seo_pack'),
76
  "customize_canonical_links"=> __( "Checking this option will allow you to customize Canonical URLs for specific posts.", 'all_in_one_seo_pack'),
77
  "can_set_protocol" => __( "Set protocol for canonical URLs.", 'all_in_one_seo_pack' ),
78
+ "use_original_title" => __( "Use wp_title to get the title used by the theme; this is disabled by default. If you use this option, set your title formats appropriately, as your theme might try to do its own title SEO as well.", 'all_in_one_seo_pack' ),
79
  "do_log" => __( "Check this and All in One SEO Pack will create a log of important events (all_in_one_seo_pack.log) in its plugin directory which might help debugging. Make sure this directory is writable.", 'all_in_one_seo_pack' ),
80
  "home_title" => __( "As the name implies, this will be the Meta Title of your homepage. This is independent of any other option. If not set, the default Site Title (found in WordPress under Settings, General, Site Title) will be used.", 'all_in_one_seo_pack' ),
81
  "home_description" => __( "This will be the Meta Description for your homepage. This is independent of any other option. The default is no Meta Description at all if this is not set.", 'all_in_one_seo_pack' ),
82
  "home_keywords" => __( "Enter a comma separated list of your most important keywords for your site that will be written as Meta Keywords on your homepage. Don\'t stuff everything in here.", 'all_in_one_seo_pack' ),
83
+ "use_static_home_info" => __( "Checking this option uses the title, description, and keywords set on your static Front Page.", 'all_in_one_seo_pack' ),
84
  "togglekeywords" => __( "This option allows you to toggle the use of Meta Keywords throughout the whole of the site.", 'all_in_one_seo_pack' ),
85
  "use_categories" => __( "Check this if you want your categories for a given post used as the Meta Keywords for this post (in addition to any keywords you specify on the Edit Post screen).", 'all_in_one_seo_pack' ),
86
  "use_tags_as_keywords" => __( "Check this if you want your tags for a given post used as the Meta Keywords for this post (in addition to any keywords you specify on the Edit Post screen).", 'all_in_one_seo_pack' ),
87
+ "dynamic_postspage_keywords"=> __( "Check this if you want your keywords on your Posts page (set in WordPress under Settings, Reading, Front Page Displays) and your archive pages to be dynamically generated from the keywords of the posts showing on that page. If unchecked, it will use the keywords set in the edit page screen for the posts page.", 'all_in_one_seo_pack'),
88
  "rewrite_titles" => __( "Note that this is all about the title tag. This is what you see in your browser's window title bar. This is NOT visible on a page, only in the title bar and in the source code. If enabled, all page, post, category, search and archive page titles get rewritten. You can specify the format for most of them. For example: Using the default post title format below, Rewrite Titles will write all post titles as 'Post Title | Blog Name'. If you have manually defined a title using All in One SEO Pack, this will become the title of your post in the format string.", 'all_in_one_seo_pack' ),
89
  "cap_titles" => __( "Check this and Search Page Titles and Tag Page Titles will have the first letter of each word capitalized.", 'all_in_one_seo_pack' ),
90
  "cap_cats" => __( "Check this and Category Titles will have the first letter of each word capitalized.", 'all_in_one_seo_pack'),
91
+ "home_page_title_format" =>
92
+ __( "This controls the format of the title tag for your Home Page.<br />The following macros are supported:", 'all_in_one_seo_pack' )
93
+ . '<ul><li>' . __( '%blog_title% - Your blog title', 'all_in_one_seo_pack' ) . '</li><li>' .
94
+ __( '%blog_description% - Your blog description', 'all_in_one_seo_pack' ) . '</li><li>' .
95
+ __( '%page_title% - The original title of the page', 'all_in_one_seo_pack' ) . '</li><li>' .
96
+ __( "%page_author_login% - This page's author' login", 'all_in_one_seo_pack' ) . '</li><li>' .
97
+ __( "%page_author_nicename% - This page's author' nicename", 'all_in_one_seo_pack' ) . '</li><li>' .
98
+ __( "%page_author_firstname% - This page's author' first name (capitalized)", 'all_in_one_seo_pack' ) . '</li><li>' .
99
+ __( "%page_author_lastname% - This page's author' last name (capitalized)", 'all_in_one_seo_pack' ) . '</li>' .
100
+ '</ul>',
101
  "page_title_format" =>
102
  __( "This controls the format of the title tag for Pages.<br />The following macros are supported:", 'all_in_one_seo_pack' )
103
  . '<ul><li>' . __( '%blog_title% - Your blog title', 'all_in_one_seo_pack' ) . '</li><li>' .
104
  __( '%blog_description% - Your blog description', 'all_in_one_seo_pack' ) . '</li><li>' .
105
  __( '%page_title% - The original title of the page', 'all_in_one_seo_pack' ) . '</li><li>' .
 
 
106
  __( "%page_author_login% - This page's author' login", 'all_in_one_seo_pack' ) . '</li><li>' .
107
  __( "%page_author_nicename% - This page's author' nicename", 'all_in_one_seo_pack' ) . '</li><li>' .
108
  __( "%page_author_firstname% - This page's author' first name (capitalized)", 'all_in_one_seo_pack' ) . '</li><li>' .
318
  "home_title"=> Array(
319
  'name' => __( 'Home Title:', 'all_in_one_seo_pack' ),
320
  'default' => null, 'type' => 'textarea', 'sanitize' => 'text',
321
+ 'count' => true, 'rows' => 1, 'cols' => 60,
322
+ 'condshow' => Array( "aiosp_use_static_home_info" => 0 ) ),
323
  "home_description"=> Array(
324
  'name' => __( 'Home Description:', 'all_in_one_seo_pack' ),
325
  'default' => '', 'type' => 'textarea', 'sanitize' => 'text',
326
+ 'count' => true, 'cols' => 80, 'rows' => 2,
327
+ 'condshow' => Array( "aiosp_use_static_home_info" => 0 ) ),
328
  "togglekeywords" => Array(
329
  'name' => __( 'Use Keywords:', 'all_in_one_seo_pack' ),
330
  'default' => 0,
335
  "home_keywords"=> Array(
336
  'name' => __( 'Home Keywords (comma separated):', 'all_in_one_seo_pack' ),
337
  'default' => null, 'type' => 'textarea', 'sanitize' => 'text',
338
+ 'condshow' => Array( "aiosp_togglekeywords" => 0, "aiosp_use_static_home_info" => 0 ) ),
339
+ "use_static_home_info" => Array(
340
+ 'name' => __( "Use Static Front Page Instead", 'all_in_one_seo_pack' ),
341
+ 'default' => 0,
342
+ 'type' => 'radio',
343
+ 'initial_options' => Array( 1 => __( 'Enabled', 'all_in_one_seo_pack' ),
344
+ 0 => __( 'Disabled', 'all_in_one_seo_pack' ) )
345
+ ),
346
  "can"=> Array(
347
  'name' => __( 'Canonical URLs:', 'all_in_one_seo_pack' ),
348
  'default' => 1),
389
  'name' => __( 'Capitalize Titles:', 'all_in_one_seo_pack' ), 'default' => 1),
390
  "cap_cats"=> Array(
391
  'name' => __( 'Capitalize Category Titles:', 'all_in_one_seo_pack' ), 'default' => 1),
392
+ "home_page_title_format"=> Array(
393
+ 'name' => __( 'Home Page Title Format:', 'all_in_one_seo_pack' ),
394
+ 'type' => 'text', 'default' => '%page_title%',
395
+ 'condshow' => Array( "aiosp_rewrite_titles" => 1 ) ),
396
  "page_title_format"=> Array(
397
  'name' => __( 'Page Title Format:', 'all_in_one_seo_pack' ),
398
  'type' => 'text', 'default' => '%page_title% | %blog_title%',
444
  'initial_options' => Array( 'on' => __( 'Enabled', 'all_in_one_seo_pack' ),
445
  0 => __( 'Disabled', 'all_in_one_seo_pack' ) )
446
  ),
447
+ "cpostactive" => Array(
448
+ 'name' => __( 'SEO on only these post types:', 'all_in_one_seo_pack' ),
449
+ 'type' => 'multicheckbox', 'default' => array('post', 'page'),
450
+ 'condshow' => Array( 'aiosp_enablecpost' => 'on' )
451
+ ),
452
  "cpostadvanced" => Array(
453
  'name' => __( 'Enable Advanced Options:', 'all_in_one_seo_pack' ),
454
  'default' => 0, 'type' => 'radio',
457
  'label' => null,
458
  'condshow' => Array( "aiosp_enablecpost" => 'on' )
459
  ),
 
 
 
 
 
460
  "cpostnoindex" => Array(
461
  'name' => __( 'Default to NOINDEX:', 'all_in_one_seo_pack' ),
462
  'type' => 'multicheckbox', 'default' => array(),
592
  'default' => 1,
593
  'condshow' => Array( "aiosp_togglekeywords" => 0 ) ),
594
  "dynamic_postspage_keywords"=> Array(
595
+ 'name' => __( 'Dynamically Generate Keywords for Posts Page/Archives:', 'all_in_one_seo_pack' ),
596
  'default' => 1,
597
  'condshow' => Array( "aiosp_togglekeywords" => 0 ) ),
598
  "category_noindex"=> Array(
683
  <script>
684
  jQuery(document).ready(function() {
685
  jQuery("#aiosp_title_wrapper").bind("input", function() {
686
+ jQuery("#aiosp_snippet_title").text(jQuery("#aiosp_title_wrapper input").val().replace(/<(?:.|\n)*?>/gm, ""));
687
  });
688
  jQuery("#aiosp_description_wrapper").bind("input", function() {
689
  jQuery("#aioseop_snippet_description").text(jQuery("#aiosp_description_wrapper textarea").val().replace(/<(?:.|\n)*?>/gm, ""));
693
  <div class="preview_snippet"><div id="aioseop_snippet"><h3><a>%s</a></h3><div><div><cite id="aioseop_snippet_link">%s</cite></div><span id="aioseop_snippet_description">%s</span></div></div></div>' ),
694
  'title' => Array( 'name' => __( 'Title', 'all_in_one_seo_pack' ), 'type' => 'text', 'count' => true, 'size' => 60 ),
695
  'description' => Array( 'name' => __( 'Description', 'all_in_one_seo_pack' ), 'type' => 'textarea', 'count' => true, 'cols' => 80, 'rows' => 2 ),
696
+
697
  'keywords' => Array( 'name' => __( 'Keywords (comma separated)', 'all_in_one_seo_pack' ), 'type' => 'text' ),
698
  'custom_link' => Array( 'name' => __( 'Custom Canonical URL', 'all_in_one_seo_pack' ), 'type' => 'text', 'size' => 60 ),
699
  'noindex' => Array( 'name' => __( "Robots Meta NOINDEX", 'all_in_one_seo_pack' ), 'default' => '' ),
721
  'home' => Array(
722
  'name' => __( 'Home Page Settings', 'all_in_one_seo_pack' ),
723
  'help_link' => 'http://semperplugins.com/documentation/home-page-settings/',
724
+ 'options' => Array( 'home_title', 'home_description', 'home_keywords', 'use_static_home_info' )
725
  ),
726
  'keywords' => Array(
727
  'name' => __( 'Keyword Settings', 'all_in_one_seo_pack' ),
731
  'title' => Array(
732
  'name' => __( 'Title Settings', 'all_in_one_seo_pack' ),
733
  'help_link' => 'http://semperplugins.com/documentation/title-settings/',
734
+ 'options' => Array( "rewrite_titles", "force_rewrites", "cap_titles", "cap_cats", "home_page_title_format", "page_title_format", "post_title_format", "category_title_format", "archive_title_format", "date_title_format", "author_title_format",
735
  "tag_title_format", "search_title_format", "description_format", "404_title_format", "paged_format" )
736
  ),
737
  'cpt' => Array(
787
  if ( !empty( $info ) )
788
  return $info;
789
  global $post, $aioseop_options, $wp_query;
790
+ $title = $url = $description = $term = $category = '';
791
  $p = $post; $w = $wp_query;
792
  if ( !is_object( $post ) ) $post = $this->get_queried_object();
793
  if ( empty( $this->meta_opts ) )
798
  if ( is_object( $post ) ) {
799
  $opts = $this->meta_opts;
800
  $post_id = $p->ID;
801
+ if ( empty( $post->post_modified_gmt ) )
802
  $wp_query = new WP_Query( array( 'p' => $post_id, 'post_type' => $post->post_type ) );
803
  if ( $post->post_type == 'page' )
804
  $wp_query->is_page = true;
827
  if ( is_page() )
828
  $title_format = $aioseop_options['aiosp_page_title_format'];
829
  elseif ( is_single() || is_attachment() )
830
+ $title_format = $this->get_post_title_format( 'post', $post );
831
  }
832
  if ( empty( $title_format ) ) {
833
  $title_format = '%post_title%';
834
  }
835
+ $categories = $this->get_all_categories( $post_id );
836
+ $category = '';
837
+ if ( count( $categories ) > 0 )
838
+ $category = $categories[0];
839
  } else if ( is_object( $term ) ) {
840
  if ( $_GET['taxonomy'] == 'category' ) {
841
  query_posts( Array( 'cat' => $_GET['tag_ID'] ) );
872
  $keywords = $this->apply_cf_fields( $keywords );
873
  $keywords = apply_filters( 'aioseop_keywords', $keywords );
874
 
875
+ $info = Array( 'title' => $title, 'description' => $description, 'keywords' => $keywords, 'url' => $url,
876
+ 'title_format' => $title_format, 'category' => $category, 'w' => $wp_query, 'p' => $post );
877
  wp_reset_postdata();
878
  $wp_query = $w; $post = $p;
 
879
  return $info;
880
  }
881
 
893
  if ( $this->strlen( $description ) > 156 ) $description = $this->trim_excerpt_without_filters( $description, 156 ) . '...';
894
  $extra_title_len = 0;
895
  if ( empty( $title_format ) ) {
896
+ $title = '<span id="' . $args['name'] . '_title">' . esc_attr( wp_strip_all_tags( html_entity_decode( $title ) ) ) . '</span>';
897
  } else {
898
  if ( strpos( $title_format, '%blog_title%' ) !== false ) $title_format = str_replace( '%blog_title%', get_bloginfo( 'name' ), $title_format );
899
  $title_format = $this->apply_cf_fields( $title_format );
900
+ $replace_title = '<span id="' . $args['name'] . '_title">' . esc_attr( wp_strip_all_tags( html_entity_decode( $title ) ) ) . '</span>';
901
  if ( strpos( $title_format, '%post_title%' ) !== false ) $title_format = str_replace( '%post_title%', $replace_title, $title_format );
902
  if ( strpos( $title_format, '%page_title%' ) !== false ) $title_format = str_replace( '%page_title%', $replace_title, $title_format );
903
+ if ( $w->is_category || $w->is_tag || $w->is_tax ) {
904
+ if ( strpos( $title_format, '%category_title%' ) !== false ) $title_format = str_replace( '%category_title%', $replace_title, $title_format );
905
+ if ( strpos( $title_format, '%taxonomy_title%' ) !== false ) $title_format = str_replace( '%taxonomy_title%', $replace_title, $title_format );
906
+ } else {
907
+ if ( strpos( $title_format, '%category%' ) !== false ) $title_format = str_replace( '%category%', $category, $title_format );
908
+ if ( strpos( $title_format, '%category_title%' ) !== false ) $title_format = str_replace( '%category_title%', $category, $title_format );
909
+ if ( strpos( $title_format, '%taxonomy_title%' ) !== false ) $title_format = str_replace( '%taxonomy_title%', $category, $title_format );
910
+ }
911
  if ( strpos( $title_format, '%taxonomy_description%' ) !== false ) $title_format = str_replace( '%taxonomy_description%', $description, $title_format );
912
 
913
  $title_format = preg_replace( '/%([^%]*?)%/', '', $title_format );
1068
  . '<ul><li>' . __( '%blog_title% - Your blog title', 'all_in_one_seo_pack' ) . '</li><li>' .
1069
  __( '%blog_description% - Your blog description', 'all_in_one_seo_pack' ) . '</li><li>' .
1070
  __( '%post_title% - The original title of the post', 'all_in_one_seo_pack' ) . '</li><li>' .
 
 
1071
  __( "%post_author_login% - This post's author' login", 'all_in_one_seo_pack' ) . '</li><li>' .
1072
  __( "%post_author_nicename% - This post's author' nicename", 'all_in_one_seo_pack' ) . '</li><li>' .
1073
  __( "%post_author_firstname% - This post's author' first name (capitalized)", 'all_in_one_seo_pack' ) . '</li><li>' .
1355
  if ( empty( $aioseop_options['aiosp_enablecpost'] ) ) {
1356
  $wp_post_types = get_post_types( Array( '_builtin' => true ) ); // don't display meta if SEO isn't enabled on custom post types -- pdb
1357
  if( is_singular() && !in_array( $post_type, $wp_post_types ) && !is_front_page() ) return false;
1358
+ } else {
1359
  $wp_post_types = $aioseop_options['aiosp_cpostactive'];
1360
  if ( is_singular() && !in_array( $post_type, $wp_post_types ) && !is_front_page() ) return false;
1361
  if ( is_post_type_archive() && !is_post_type_archive( $wp_post_types ) ) return false;
1443
  function is_static_front_page() {
1444
  if ( isset( $this->is_front_page ) && $this->is_front_page !== null ) return $this->is_front_page;
1445
  $post = $this->get_queried_object();
1446
+ $this->is_front_page = ( get_option( 'show_on_front' ) == 'page' && is_page() && !empty( $post ) && $post->ID == get_option( 'page_on_front' ) );
1447
  return $this->is_front_page;
1448
  }
1449
 
1451
  static $is_posts_page = null;
1452
  if ( $is_posts_page !== null ) return $is_posts_page;
1453
  $post = $this->get_queried_object();
1454
+ $is_posts_page = ( get_option( 'show_on_front' ) == 'page' && is_home() && !empty( $post ) && $post->ID == get_option( 'page_for_posts' ) );
1455
  return $is_posts_page;
1456
  }
1457
 
1644
  if ( is_author() && $this->show_page_description() ) {
1645
  $description = $this->internationalize( get_the_author_meta( 'description' ) );
1646
  } else if ( is_front_page() ) {
1647
+ $description = $this->get_aioseop_description( $post );
1648
  } else if ( function_exists( 'woocommerce_get_page_id' ) && is_post_type_archive( 'product' ) && ( $post_id = woocommerce_get_page_id( 'shop' ) ) && ( $post = get_post( $post_id ) ) ) {
1649
  $description = $this->get_post_description( $post );
1650
  $description = $this->apply_cf_fields( $description );
1700
  global $post;
1701
  $opts = $this->meta_opts;
1702
  if ( ( ( is_front_page() && $aioseop_options['aiosp_home_keywords'] && !$this->is_static_posts_page() ) || $this->is_static_front_page() ) ) {
1703
+ if ( !empty( $aioseop_options['aiosp_use_static_home_info'] ) ) {
1704
+ $keywords = $this->get_all_keywords();
1705
+ } else {
1706
+ $keywords = trim( $this->internationalize( $aioseop_options['aiosp_home_keywords'] ) );
1707
+ }
1708
+ } elseif ( empty( $aioseop_options['aiosp_dynamic_postspage_keywords'] ) && $this->is_static_posts_page() ) {
1709
+ $keywords = stripslashes( $this->internationalize( $opts["aiosp_keywords"] ) ); // and if option = use page set keywords instead of keywords from recent posts
1710
  } elseif ( ( $blog_page = $this->get_blog_page( $post ) ) && empty( $aioseop_options['aiosp_dynamic_postspage_keywords'] ) ) {
1711
+ $keywords = stripslashes( $this->internationalize( get_post_meta( $blog_page->ID, "_aioseop_keywords", true ) ) );
1712
+ } elseif ( empty( $aioseop_options['aiosp_dynamic_postspage_keywords'] ) && ( is_archive() || is_post_type_archive() ) ) {
1713
+ $keywords = "";
1714
  } else {
1715
  $keywords = $this->get_all_keywords();
1716
  }
2315
  default:
2316
  return false;
2317
  }
2318
+ } elseif ( ( $query->is_home && (get_option( 'show_on_front' ) == 'page' ) && ( $pageid = get_option( 'page_for_posts' ) ) ) ) {
2319
+ $link = get_permalink( $pageid );
2320
+ } elseif ( is_front_page() || ( $query->is_home && ( get_option( 'show_on_front' ) != 'page' || !get_option( 'page_for_posts' ) ) ) ) {
2321
+ if ( function_exists( 'icl_get_home_url' ) ) {
2322
+ $link = icl_get_home_url();
2323
+ } else {
2324
+ $link = trailingslashit( home_url() );
2325
+ }
2326
  } elseif ( ( $query->is_single || $query->is_page ) && $haspost ) {
2327
  $post = $query->posts[0];
2328
  $link = get_permalink( $post->ID );
2345
  get_query_var( 'monthnum' ) );
2346
  } elseif ( $query->is_year && $haspost ) {
2347
  $link = get_year_link( get_query_var( 'year' ) );
 
 
 
 
 
 
 
 
 
 
 
2348
  } elseif ( $query->is_tax && $haspost ) {
2349
  $taxonomy = get_query_var( 'taxonomy' );
2350
  $term = get_query_var( 'term' );
2394
  }
2395
  return $link;
2396
  }
2397
+
2398
+ function is_singular( $post_types = Array(), $post = null ) {
2399
+ if ( !empty( $post_types ) && is_object( $post ) )
2400
+ return in_array( $post->post_type, (array)$post_types );
2401
+ else
2402
+ return is_singular( $post_types );
2403
+ }
2404
+
2405
  function show_page_description() {
2406
  global $aioseop_options;
2407
  if ( !empty( $aioseop_options['aiosp_hide_paginated_descriptions'] ) ) {
2414
 
2415
  function get_post_description( $post ) {
2416
  global $aioseop_options;
2417
+ $description = '';
2418
  if ( !$this->show_page_description() )
2419
  return '';
2420
 
2421
  $description = trim( stripslashes( $this->internationalize( get_post_meta( $post->ID, "_aioseop_description", true ) ) ) );
2422
+ if ( !empty( $post ) && post_password_required( $post ) ) {
2423
+ return $description;
2424
+ }
2425
  if ( !$description ) {
2426
  if ( empty( $aioseop_options["aiosp_skip_excerpt"] ) )
2427
  $description = $this->trim_excerpt_without_filters_full_length( $this->internationalize( $post->post_excerpt ) );
2459
  if ( $post === null )
2460
  $post = $GLOBALS["post"];
2461
  $blog_page = $this->get_blog_page();
2462
+ $description = '';
2463
+ if ( $this->is_static_front_page() && empty( $aioseop_options['aiosp_use_static_home_info'] ) )
2464
  $description = trim( stripslashes( $this->internationalize( $aioseop_options['aiosp_home_description'] ) ) );
2465
  elseif ( !empty( $blog_page ) )
2466
  $description = $this->get_post_description( $blog_page );
2492
  if ( function_exists( 'polyglot_filter' ) )
2493
  $in = polyglot_filter( $in );
2494
 
2495
+ if ( function_exists( 'qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) {
2496
  $in = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in );
2497
+ } elseif ( function_exists( 'ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) {
2498
+ $in = ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in );
2499
+ } elseif ( function_exists( 'qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) {
2500
+ $in = qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in );
2501
+ }
2502
 
2503
  return apply_filters( 'localization', $in );
2504
  }
2505
 
2506
  /** @return The original title as delivered by WP (well, in most cases) */
2507
+ function get_original_title( $sep = '|', $echo = false, $seplocation = '' ) {
2508
  global $aioseop_options;
2509
  if ( !empty( $aioseop_options['aiosp_use_original_title'] ) ) {
2510
  $has_filter = has_filter( 'wp_title', Array( $this, 'wp_title' ) );
2511
  if ( $has_filter !== false )
2512
  remove_filter( 'wp_title', Array( $this, 'wp_title' ), $has_filter );
2513
+ if ( current_theme_supports( 'title-tag' ) ) {
2514
+ $sep = '|';
2515
+ $echo = false;
2516
+ $seplocation = 'right';
2517
+ }
2518
  $title = wp_title( $sep, $echo, $seplocation );
2519
  if ( $has_filter !== false )
2520
  add_filter( 'wp_title', Array( $this, 'wp_title' ), $has_filter );
2616
  if ( strpos( $title, '%category_description%' ) !== false ) $title = str_replace( '%category_description%', $category_description, $title );
2617
  if ( strpos( $title, '%blog_title%' ) !== false ) $title = str_replace( '%blog_title%', $this->internationalize( get_bloginfo( 'name' ) ), $title );
2618
  if ( strpos( $title, '%blog_description%' ) !== false ) $title = str_replace( '%blog_description%', $this->internationalize( get_bloginfo( 'description' ) ), $title );
2619
+ $title = wp_strip_all_tags( $title );
 
2620
  return $this->paged_title( $title );
2621
  }
2622
 
2645
  return $this->apply_tax_title_format( $name, $desc, $tax );
2646
  }
2647
 
2648
+ function get_post_title_format( $title_type = 'post', $p = null ) {
2649
  global $aioseop_options;
2650
  if ( ( $title_type != 'post' ) && ( $title_type != 'archive' ) ) return false;
2651
  $title_format = "%{$title_type}_title% | %blog_title%";
2652
  if ( isset( $aioseop_options["aiosp_{$title_type}_title_format"] ) )
2653
  $title_format = $aioseop_options["aiosp_{$title_type}_title_format"];
2654
+ if( !empty( $aioseop_options['aiosp_enablecpost'] ) && !empty( $aioseop_options['aiosp_cpostactive'] ) ) {
2655
  $wp_post_types = $aioseop_options['aiosp_cpostactive'];
2656
  if ( !empty( $aioseop_options["aiosp_cposttitles"] ) ) {
2657
  if ( ( ( $title_type == 'archive' ) && is_post_type_archive( $wp_post_types ) && $prefix = "aiosp_{$title_type}_" ) ||
2658
+ ( ( $title_type == 'post' ) && $this->is_singular( $wp_post_types, $p ) && $prefix = "aiosp_" ) ) {
2659
+ $post_type = get_post_type( $p );
2660
+ if ( !empty( $aioseop_options["{$prefix}{$post_type}_title_format"] ) ) {
2661
+ $title_format = $aioseop_options["{$prefix}{$post_type}_title_format"];
2662
+ }
2663
  }
2664
  }
2665
  }
2684
  } else {
2685
  $post = $p;
2686
  }
2687
+ $title_format = $this->get_post_title_format( 'post', $p );
2688
  if ( !empty( $post ) )
2689
  $authordata = get_userdata( $post->post_author );
2690
  else
2695
  return $title;
2696
  }
2697
 
2698
+ function apply_page_title_format( $title, $p = null, $title_format = '' ) {
2699
  global $aioseop_options;
2700
  if ( $p === null ) {
2701
  global $post;
2702
  } else {
2703
  $post = $p;
2704
  }
2705
+ if ( empty( $title_format ) )
2706
+ $title_format = $aioseop_options['aiosp_page_title_format'];
2707
  if ( !empty( $post ) )
2708
  $authordata = get_userdata( $post->post_author );
2709
  else
2726
  global $s, $STagging;
2727
  $opts = $this->meta_opts;
2728
  if ( is_front_page() ) {
2729
+ if ( !empty( $aioseop_options['aiosp_use_static_home_info'] ) ) {
2730
+ global $post;
2731
+ if ( get_option( 'show_on_front' ) == 'page' && is_page() && $post->ID == get_option( 'page_on_front' ) ) {
2732
+ $title = $this->internationalize( get_post_meta( $post->ID, "_aioseop_title", true ) );
2733
+ if ( !$title ) $title = $this->internationalize( $post->post_title );
2734
+ if ( !$title ) $title = $this->internationalize( $this->get_original_title( '', false ) );
2735
+ if ( !empty( $aioseop_options['aiosp_home_page_title_format'] ) )
2736
+ $title = $this->apply_page_title_format( $title, $post, $aioseop_options['aiosp_home_page_title_format'] );
2737
+ $title = $this->paged_title( $title );
2738
+ $title = apply_filters( 'aioseop_home_page_title', $title );
2739
+ }
2740
+ } else {
2741
+ $title = $this->internationalize( $aioseop_options['aiosp_home_title'] );
2742
+ if ( !empty( $aioseop_options['aiosp_home_page_title_format'] ) )
2743
+ $title = $this->apply_page_title_format( $title, null, $aioseop_options['aiosp_home_page_title_format'] );
2744
+ }
2745
  if (empty( $title ) )
2746
  $title = $this->internationalize( get_option( 'blogname' ) ) . ' | ' . $this->internationalize( get_bloginfo( 'description' ) );
2747
  return $this->paged_title( $title );
2756
  } else if ( is_page() || $this->is_static_posts_page() || ( is_home() && !$this->is_static_posts_page() ) ) {
2757
  if ( $post === null ) return false;
2758
  if ( ( $this->is_static_front_page() ) && ( $home_title = $this->internationalize( $aioseop_options['aiosp_home_title'] ) ) ) {
2759
+ if ( !empty( $aioseop_options['aiosp_home_page_title_format'] ) )
2760
+ $home_title = $this->apply_page_title_format( $home_title, $post, $aioseop_options['aiosp_home_page_title_format'] );
2761
  //home title filter
2762
  return apply_filters( 'aioseop_home_page_title', $home_title );
2763
  } else {
2796
  } else if ( is_single() ) {
2797
  // we're not in the loop :(
2798
  if ( $post === null ) return false;
2799
+ $categories = $this->get_all_categories();
2800
  $category = '';
2801
+ if ( count( $categories ) > 0 )
2802
+ $category = $categories[0];
 
2803
  $title = $this->internationalize( get_post_meta( $post->ID, "_aioseop_title", true ) );
2804
  if ( !$title ) {
2805
  $title = $this->internationalize( get_post_meta( $post->ID, "title_tag", true ) );
3006
 
3007
  function get_all_categories( $id = 0 ) {
3008
  $keywords = Array();
3009
+ $categories = get_the_category( $id );
3010
+ if ( !empty( $categories ) )
3011
+ foreach ( $categories as $category )
3012
+ $keywords[] = $this->internationalize( $category->cat_name );
3013
  return $keywords;
3014
  }
3015
 
3016
  function get_all_tags( $id = 0 ) {
3017
  $keywords = Array();
3018
  $tags = get_the_tags( $id );
3019
+ if ( !empty( $tags ) && is_array( $tags) )
3020
  foreach ( $tags as $tag )
3021
  $keywords[] = $this->internationalize( $tag->name );
3022
  // Ultimate Tag Warrior integration
3048
  $keywords = array();
3049
  $opts = $this->meta_opts;
3050
  if ( !empty( $opts["aiosp_keywords"] ) ) {
3051
+ $traverse = $this->keyword_string_to_list( $this->internationalize( $opts["aiosp_keywords"] ) );
3052
  if ( !empty( $traverse ) )
3053
  foreach ( $traverse as $keyword ) $keywords[] = $keyword;
3054
  }
aioseop_functions.php CHANGED
@@ -155,9 +155,13 @@ if ( !function_exists( 'aioseop_admin_head' ) ) {
155
  echo '<script type="text/javascript" src="' . AIOSEOP_PLUGIN_URL . 'quickedit_functions.js" ></script>';
156
  ?><style>
157
  .aioseop_edit_button {
158
- margin: 0 0 0 5px;
159
- opacity: 0.6;
160
- width: 12px;
 
 
 
 
161
  }
162
  .aioseop_mpc_SEO_admin_options_edit img {
163
  margin: 3px 2px;
@@ -167,12 +171,24 @@ if ( !function_exists( 'aioseop_admin_head' ) ) {
167
  float: left;
168
  display: block;
169
  opacity: 1;
 
 
 
 
 
 
 
170
  }
171
  .aioseop_mpc_admin_meta_content {
172
  float:left;
173
  width: 100%;
174
  margin: 0 0 10px 0;
175
- }
 
 
 
 
 
176
  </style>
177
  <?php wp_print_scripts( Array( 'sack' ) );
178
  ?><script type="text/javascript">
@@ -209,10 +225,11 @@ if ( !function_exists( 'aioseop_handle_ignore_notice' ) ) {
209
 
210
  if ( !function_exists( 'aioseop_output_notice' ) ) {
211
  function aioseop_output_notice( $message, $id = '', $class = "updated fade" ) {
 
212
  if ( !empty( $class ) ) $class = ' class="' . esc_attr( $class ) . '"';
213
  if ( !empty( $id ) ) $class .= ' id="' . esc_attr( $id ) . '"';
214
  $dismiss = ' ';
215
- echo "<div{$class}>" . wp_kses_post( $message ) . "</div>";
216
  return true;
217
  }
218
  }
@@ -230,12 +247,11 @@ if ( !function_exists( 'aioseop_output_dismissable_notice' ) ) {
230
  wp_parse_str( $_SERVER["QUERY_STRING"], $qa );
231
  $qa['aioseop_ignore_notice'] = $msgid;
232
  $url = '?' . build_query( $qa );
233
- $message .= ' <a class="alignright" href="' . $url . '">Dismiss</a>';
234
  }
235
  return aioseop_output_notice( $message, $id, $class );
236
  }
237
  }
238
-
239
  if ( !function_exists( 'aioseop_ajax_save_meta' ) ) {
240
  function aioseop_ajax_save_meta() {
241
  if ( !empty( $_POST['_inline_edit'] ) && ( $_POST['_inline_edit'] != 'undefined' ) )
@@ -252,15 +268,14 @@ if ( !function_exists( 'aioseop_ajax_save_meta' ) ) {
252
  die();
253
  }
254
  if( $result != '' ):
255
- $label = "<label id='aioseop_label_{$target}_{$post_id}'>" . $result . '</label>';
256
  else:
257
- $label = '';
258
- $label = "<label id='aioseop_label_{$target}_{$post_id}'></label><strong><i>" . __( 'No', 'all_in_one_seo_pack' ) . ' ' . $target . '</i></strong>';
259
  endif;
260
  $nonce = wp_create_nonce( "aioseop_meta_{$target}_{$post_id}" );
261
- $output = $label . '<a id="' . $target . 'editlink' . $post_id . '" href="javascript:void(0);"';
262
- $output .= 'onclick=\'aioseop_ajax_edit_meta_form(' . $post_id . ', "' . $target . '", "' . $nonce . '");return false;\' title="' . __('Edit') . '">';
263
- $output .= '<img class="aioseop_edit_button" id="aioseop_edit_id" src="' . AIOSEOP_PLUGIN_IMAGES_URL . '/cog_edit.png" /></a>';
264
  die( "jQuery('div#aioseop_" . $target . "_" . $post_id . "').fadeOut('fast', function() { var my_label = " . json_encode( $output ) . ";
265
  jQuery('div#aioseop_" . $target . "_" . $post_id . "').html(my_label).fadeIn('fast');
266
  });" );
@@ -515,16 +530,16 @@ if ( !function_exists( 'aioseop_mrt_pccolumn' ) ) {
515
  style="float:left;">
516
  <?php $content = strip_tags( stripslashes( get_post_meta( $id, "_aioseop_" . $target, TRUE ) ) );
517
  if( !empty($content) ):
518
- $label = "<label id='aioseop_label_{$target}_{$id}'>" . $content . '</label>';
519
  else:
520
- $label = "<label id='aioseop_label_{$target}_{$id}'></label><strong><i>No " . $target . '</i></strong>';
521
  endif;
522
  $nonce = wp_create_nonce( "aioseop_meta_{$target}_{$id}" );
523
- print $label . '<a id="' . $target . 'editlink' . $id . '" href="javascript:void(0);" onclick=\'aioseop_ajax_edit_meta_form(' .
524
- $id . ', "' . $target . '", "' . $nonce . '");return false;\' title="' . __('Edit') . '">';
525
- print "<img class='aioseop_edit_button'
526
  id='aioseop_edit_id'
527
- src='" . AIOSEOP_PLUGIN_IMAGES_URL . "cog_edit.png' /></a>";
528
  ?>
529
  </div>
530
  </div>
155
  echo '<script type="text/javascript" src="' . AIOSEOP_PLUGIN_URL . 'quickedit_functions.js" ></script>';
156
  ?><style>
157
  .aioseop_edit_button {
158
+ margin: 0 0 0 5px;
159
+ opacity: 0.6;
160
+ width: 12px;
161
+ }
162
+ .aioseop_edit_link {
163
+ display: inline-block;
164
+ position: absolute;
165
  }
166
  .aioseop_mpc_SEO_admin_options_edit img {
167
  margin: 3px 2px;
171
  float: left;
172
  display: block;
173
  opacity: 1;
174
+ max-height: 75px;
175
+ overflow: hidden;
176
+ width: 100%;
177
+ }
178
+ .aioseop_mpc_admin_meta_options.editing {
179
+ max-height: initial;
180
+ overflow: visible;
181
  }
182
  .aioseop_mpc_admin_meta_content {
183
  float:left;
184
  width: 100%;
185
  margin: 0 0 10px 0;
186
+ }
187
+ td.seotitle.column-seotitle,
188
+ td.seodesc.column-seodesc,
189
+ td.seokeywords.column-seokeywords {
190
+ overflow: visible;
191
+ }
192
  </style>
193
  <?php wp_print_scripts( Array( 'sack' ) );
194
  ?><script type="text/javascript">
225
 
226
  if ( !function_exists( 'aioseop_output_notice' ) ) {
227
  function aioseop_output_notice( $message, $id = '', $class = "updated fade" ) {
228
+ $class = 'aioseop_notice ' . $class;
229
  if ( !empty( $class ) ) $class = ' class="' . esc_attr( $class ) . '"';
230
  if ( !empty( $id ) ) $class .= ' id="' . esc_attr( $id ) . '"';
231
  $dismiss = ' ';
232
+ echo "<div{$class}>" . wp_kses_post( $message ) . "<br class=clear /></div>";
233
  return true;
234
  }
235
  }
247
  wp_parse_str( $_SERVER["QUERY_STRING"], $qa );
248
  $qa['aioseop_ignore_notice'] = $msgid;
249
  $url = '?' . build_query( $qa );
250
+ $message = '<p class=alignleft>' . $message . '</p><p class="alignright"><a class="aioseop_dismiss_link" href="' . $url . '">Dismiss</a></p>';
251
  }
252
  return aioseop_output_notice( $message, $id, $class );
253
  }
254
  }
 
255
  if ( !function_exists( 'aioseop_ajax_save_meta' ) ) {
256
  function aioseop_ajax_save_meta() {
257
  if ( !empty( $_POST['_inline_edit'] ) && ( $_POST['_inline_edit'] != 'undefined' ) )
268
  die();
269
  }
270
  if( $result != '' ):
271
+ $label = "<label id='aioseop_label_{$target}_{$post_id}'><span style='width: 20px;display: inline-block;'></span>" . $result . '</label>';
272
  else:
273
+ $label = "<label id='aioseop_label_{$target}_{$post_id}'></label><span style='width: 20px;display: inline-block;'></span><strong><i>" . __( 'No', 'all_in_one_seo_pack' ) . ' ' . $target . '</i></strong>';
 
274
  endif;
275
  $nonce = wp_create_nonce( "aioseop_meta_{$target}_{$post_id}" );
276
+ $output = '<a id="' . $target . 'editlink' . $post_id . '" class="aioseop_edit_link" href="javascript:void(0);"'
277
+ . 'onclick=\'aioseop_ajax_edit_meta_form(' . $post_id . ', "' . $target . '", "' . $nonce . '");return false;\' title="' . __('Edit') . '">'
278
+ . '<img class="aioseop_edit_button" id="aioseop_edit_id" src="' . AIOSEOP_PLUGIN_IMAGES_URL . '/cog_edit.png" /></a> ' . $label;
279
  die( "jQuery('div#aioseop_" . $target . "_" . $post_id . "').fadeOut('fast', function() { var my_label = " . json_encode( $output ) . ";
280
  jQuery('div#aioseop_" . $target . "_" . $post_id . "').html(my_label).fadeIn('fast');
281
  });" );
530
  style="float:left;">
531
  <?php $content = strip_tags( stripslashes( get_post_meta( $id, "_aioseop_" . $target, TRUE ) ) );
532
  if( !empty($content) ):
533
+ $label = "<label id='aioseop_label_{$target}_{$id}'><span style='width: 20px;display: inline-block;'></span>" . $content . '</label>';
534
  else:
535
+ $label = "<label id='aioseop_label_{$target}_{$id}'></label><span style='width: 20px;display: inline-block;'></span><strong><i>" . __( 'No', 'all_in_one_seo_pack' ) . " " . $target . '</i></strong>';
536
  endif;
537
  $nonce = wp_create_nonce( "aioseop_meta_{$target}_{$id}" );
538
+ echo '<a id="' . $target . 'editlink' . $id . '" class="aioseop_edit_link" href="javascript:void(0);" onclick=\'aioseop_ajax_edit_meta_form(' .
539
+ $id . ', "' . $target . '", "' . $nonce . '");return false;\' title="' . __('Edit') . '">'
540
+ . "<img class='aioseop_edit_button'
541
  id='aioseop_edit_id'
542
+ src='" . AIOSEOP_PLUGIN_IMAGES_URL . "cog_edit.png' /></a> " . $label;
543
  ?>
544
  </div>
545
  </div>
aioseop_module.css CHANGED
@@ -840,6 +840,14 @@ table.aioseop_table td, table.aioseop_table th {
840
  .aioseop_option_docs h3 {
841
  background:none;
842
  }
 
 
 
 
 
 
 
 
843
  .aioseop_error_notice {
844
  color: #f00;
845
  font-weight: bold;
840
  .aioseop_option_docs h3 {
841
  background:none;
842
  }
843
+ div.aioseop_notice {
844
+ position: relative;
845
+ }
846
+ div.aioseop_notice a.aioseop_dismiss_link {
847
+ position: absolute;
848
+ top: 10px;
849
+ right: 10px;
850
+ }
851
  .aioseop_error_notice {
852
  color: #f00;
853
  font-weight: bold;
aioseop_module_class.php CHANGED
@@ -128,7 +128,7 @@ if ( !class_exists( 'All_in_One_SEO_Pack_Module' ) ) {
128
  function convert_case( $str, $mode = 'upper' ) {
129
  static $charset = null;
130
  if ( $charset == null ) $charset = get_bloginfo( 'charset' );
131
-
132
  if ( $mode == 'title' ) {
133
  if ( function_exists( 'mb_convert_case' ) )
134
  return mb_convert_case( $str, MB_CASE_TITLE, $charset );
128
  function convert_case( $str, $mode = 'upper' ) {
129
  static $charset = null;
130
  if ( $charset == null ) $charset = get_bloginfo( 'charset' );
131
+ $str = (string)$str;
132
  if ( $mode == 'title' ) {
133
  if ( function_exists( 'mb_convert_case' ) )
134
  return mb_convert_case( $str, MB_CASE_TITLE, $charset );
aioseop_opengraph.php CHANGED
@@ -78,6 +78,8 @@ if ( !class_exists( 'All_in_One_SEO_Pack_Opengraph' ) ) {
78
  $this->help_text = Array(
79
  "setmeta" => __( "Checking this box will use the Home Title and Home Description set in All in One SEO Pack, General Settings as the Open Graph title and description for your home page.", 'all_in_one_seo_pack' ),
80
  "key" => __( "Your Profile Admin ID is your Facebook profile ID. You can find out your Facebook ID using the lookup tool here: https://graph.facebook.com/yourusername", 'all_in_one_seo_pack' ),
 
 
81
  "sitename" => __( "The Site Name is the name that is used to identify your website.", 'all_in_one_seo_pack' ),
82
  "hometitle" => __( "The Home Title is the Open Graph title for your home page.", 'all_in_one_seo_pack' ),
83
  "description" => __( "The Home Description is the Open Graph description for your home page.", 'all_in_one_seo_pack' ),
@@ -144,6 +146,8 @@ if ( !class_exists( 'All_in_One_SEO_Pack_Opengraph' ) ) {
144
  'scan_header'=> Array( 'name' => __( 'Scan Header', 'all_in_one_seo_pack' ), 'type' => 'custom', 'save' => true ),
145
  'setmeta' => Array( 'name' => __( 'Use AIOSEO Title and Description', 'all_in_one_seo_pack'), 'type' => 'checkbox' ),
146
  'key' => Array( 'name' => __( 'Profile Admins ID', 'all_in_one_seo_pack'), 'default' => '', 'type' => 'text' ),
 
 
147
  'sitename' => Array( 'name' => __( 'Site Name', 'all_in_one_seo_pack' ), 'default' => get_bloginfo('name'), 'type' => 'text' ),
148
  'hometitle' => Array( 'name' => __( 'Home Title', 'all_in_one_seo_pack'),
149
  'default' => '', 'type' => 'textarea', 'condshow' => Array( 'aiosp_opengraph_setmeta' => Array( 'lhs' => "aiosp_opengraph_setmeta", 'op' => '!=', 'rhs' => 'on' ) ) ),
@@ -215,7 +219,7 @@ if ( !class_exists( 'All_in_One_SEO_Pack_Opengraph' ) ) {
215
 
216
  $this->locations = array(
217
  'opengraph' => Array( 'name' => $this->name, 'prefix' => 'aiosp_', 'type' => 'settings',
218
- 'options' => Array('scan_header', 'setmeta', 'key', 'sitename', 'hometitle', 'description', 'homeimage', 'hometag', 'generate_descriptions', 'defimg',
219
  'fallback', 'dimg', 'meta_key', 'categories', 'defcard', 'twitter_site', 'twitter_creator', 'twitter_domain', 'gen_tags', 'gen_keywords', 'gen_categories',
220
  'gen_post_tags', 'types', 'facebook_publisher', 'facebook_author' ) ),
221
  'settings' => Array( 'name' => __('Social Settings', 'all_in_one_seo_pack'),
@@ -462,16 +466,16 @@ if ( !class_exists( 'All_in_One_SEO_Pack_Opengraph' ) ) {
462
 
463
  /* If Use AIOSEO Title and Desc Selected */
464
  if( $setmeta ) {
465
- $title = $aioseop_options['aiosp_home_title'];
466
  if ( $first_page )
467
- $description = $aioseop_options['aiosp_home_description'];
468
  }
469
 
470
  /* Add some defaults */
471
  if( empty($title) ) $title = get_bloginfo('name');
472
  if( empty($sitename) ) $sitename = get_bloginfo('name');
473
 
474
- if ( empty( $description ) && $first_page && ( !empty( $this->options['aiosp_opengraph_generate_descriptions'] ) ) && !empty( $post ) && !empty( $post->post_content ) )
475
  $description = $aiosp->trim_excerpt_without_filters( $aiosp->internationalize( preg_replace( '/\s+/', ' ', $post->post_content ) ), 1000 );
476
 
477
  if ( empty($description) && $first_page ) $description = get_bloginfo('description');
@@ -523,7 +527,7 @@ if ( !class_exists( 'All_in_One_SEO_Pack_Opengraph' ) ) {
523
 
524
  /* Add some defaults */
525
  if ( empty( $title ) ) $title = get_the_title();
526
- if ( empty( $description ) && ( $this->options['aiosp_opengraph_generate_descriptions'] ) )
527
  $description = $post->post_content;
528
  if ( empty( $type ) ) $type = 'article';
529
  } else return;
@@ -549,9 +553,19 @@ if ( !class_exists( 'All_in_One_SEO_Pack_Opengraph' ) ) {
549
  if ( !empty( $tag ) )
550
  $tag = $aiosp->clean_keyword_list( $tag );
551
  }
552
- if ( !empty( $description ) )
553
- $description = $aiosp->trim_excerpt_without_filters( $aiosp->internationalize( preg_replace( '/\s+/', ' ', $description ) ), 1000 );
554
 
 
 
 
 
 
 
 
 
 
 
 
 
555
  $title = $this->apply_cf_fields( $title );
556
  $description = $this->apply_cf_fields( $description );
557
 
78
  $this->help_text = Array(
79
  "setmeta" => __( "Checking this box will use the Home Title and Home Description set in All in One SEO Pack, General Settings as the Open Graph title and description for your home page.", 'all_in_one_seo_pack' ),
80
  "key" => __( "Your Profile Admin ID is your Facebook profile ID. You can find out your Facebook ID using the lookup tool here: https://graph.facebook.com/yourusername", 'all_in_one_seo_pack' ),
81
+ "title_shortcodes" => __( "Run shortcodes that appear in social title meta tags.", 'all_in_one_seo_pack' ),
82
+ "description_shortcodes"=> __( "Run shortcodes that appear in social description meta tags.", 'all_in_one_seo_pack' ),
83
  "sitename" => __( "The Site Name is the name that is used to identify your website.", 'all_in_one_seo_pack' ),
84
  "hometitle" => __( "The Home Title is the Open Graph title for your home page.", 'all_in_one_seo_pack' ),
85
  "description" => __( "The Home Description is the Open Graph description for your home page.", 'all_in_one_seo_pack' ),
146
  'scan_header'=> Array( 'name' => __( 'Scan Header', 'all_in_one_seo_pack' ), 'type' => 'custom', 'save' => true ),
147
  'setmeta' => Array( 'name' => __( 'Use AIOSEO Title and Description', 'all_in_one_seo_pack'), 'type' => 'checkbox' ),
148
  'key' => Array( 'name' => __( 'Profile Admins ID', 'all_in_one_seo_pack'), 'default' => '', 'type' => 'text' ),
149
+ 'title_shortcodes' => Array('name' => __( 'Run Shortcodes In Title', 'all_in_one_seo_pack' ) ),
150
+ 'description_shortcodes' => Array('name' => __( 'Run Shortcodes In Description', 'all_in_one_seo_pack' ) ),
151
  'sitename' => Array( 'name' => __( 'Site Name', 'all_in_one_seo_pack' ), 'default' => get_bloginfo('name'), 'type' => 'text' ),
152
  'hometitle' => Array( 'name' => __( 'Home Title', 'all_in_one_seo_pack'),
153
  'default' => '', 'type' => 'textarea', 'condshow' => Array( 'aiosp_opengraph_setmeta' => Array( 'lhs' => "aiosp_opengraph_setmeta", 'op' => '!=', 'rhs' => 'on' ) ) ),
219
 
220
  $this->locations = array(
221
  'opengraph' => Array( 'name' => $this->name, 'prefix' => 'aiosp_', 'type' => 'settings',
222
+ 'options' => Array('scan_header', 'setmeta', 'key', 'sitename', 'title_shortcodes', 'description_shortcodes', 'hometitle', 'description', 'homeimage', 'hometag', 'generate_descriptions', 'defimg',
223
  'fallback', 'dimg', 'meta_key', 'categories', 'defcard', 'twitter_site', 'twitter_creator', 'twitter_domain', 'gen_tags', 'gen_keywords', 'gen_categories',
224
  'gen_post_tags', 'types', 'facebook_publisher', 'facebook_author' ) ),
225
  'settings' => Array( 'name' => __('Social Settings', 'all_in_one_seo_pack'),
466
 
467
  /* If Use AIOSEO Title and Desc Selected */
468
  if( $setmeta ) {
469
+ $title = $aiosp->get_aioseop_title( $post );
470
  if ( $first_page )
471
+ $description = $aiosp->get_aioseop_description( $post );
472
  }
473
 
474
  /* Add some defaults */
475
  if( empty($title) ) $title = get_bloginfo('name');
476
  if( empty($sitename) ) $sitename = get_bloginfo('name');
477
 
478
+ if ( empty( $description ) && $first_page && ( !empty( $this->options['aiosp_opengraph_generate_descriptions'] ) ) && !empty( $post ) && !empty( $post->post_content ) && !post_password_required( $post ) )
479
  $description = $aiosp->trim_excerpt_without_filters( $aiosp->internationalize( preg_replace( '/\s+/', ' ', $post->post_content ) ), 1000 );
480
 
481
  if ( empty($description) && $first_page ) $description = get_bloginfo('description');
527
 
528
  /* Add some defaults */
529
  if ( empty( $title ) ) $title = get_the_title();
530
+ if ( empty( $description ) && ( $this->options['aiosp_opengraph_generate_descriptions'] ) && !post_password_required( $post ) )
531
  $description = $post->post_content;
532
  if ( empty( $type ) ) $type = 'article';
533
  } else return;
553
  if ( !empty( $tag ) )
554
  $tag = $aiosp->clean_keyword_list( $tag );
555
  }
 
 
556
 
557
+ if ( !empty( $this->options['aiosp_opengraph_title_shortcodes'] ) ) {
558
+ $title = do_shortcode( $title );
559
+ }
560
+
561
+ if ( !empty( $description ) ) {
562
+ $description = $aiosp->internationalize( preg_replace( '/\s+/', ' ', $description ) );
563
+ if ( !empty( $this->options['aiosp_opengraph_description_shortcodes'] ) ) {
564
+ $description = do_shortcode( $description );
565
+ }
566
+ $description = $aiosp->trim_excerpt_without_filters( $description, 1000 );
567
+ }
568
+
569
  $title = $this->apply_cf_fields( $title );
570
  $description = $this->apply_cf_fields( $description );
571
 
all_in_one_seo_pack.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: All In One SEO Pack
4
  Plugin URI: http://semperfiwebdesign.com
5
  Description: Out-of-the-box SEO for your WordPress blog. <a href="admin.php?page=all-in-one-seo-pack/aioseop_class.php">Options configuration panel</a> | <a href="http://semperplugins.com/plugins/all-in-one-seo-pack-pro-version/?loc=plugins" target="_blank">Upgrade to Pro Version</a> | <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtorbert%40gmail%2ecom&item_name=All%20In%20One%20SEO%20Pack&item_number=Support%20Open%20Source&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8">Donate</a> | <a href="http://semperplugins.com/support/" >Support</a> | <a href="https://www.amazon.com/wishlist/1NFQ133FNCOOA/ref=wl_web" target="_blank" title="Amazon Wish List">Amazon Wishlist</a>
6
- Version: 2.2.5.1
7
  Author: Michael Torbert
8
  Author URI: http://michaeltorbert.com
9
  */
@@ -30,16 +30,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
30
 
31
  /**
32
  * @package All-in-One-SEO-Pack
33
- * @version 2.2.5.1
34
  */
35
 
 
 
36
  global $aioseop_plugin_name;
37
  $aioseop_plugin_name = 'All in One SEO Pack';
38
  if ( ! defined( 'AIOSEOP_PLUGIN_NAME' ) )
39
  define( 'AIOSEOP_PLUGIN_NAME', $aioseop_plugin_name );
40
 
41
  if ( ! defined( 'AIOSEOP_VERSION' ) )
42
- define( 'AIOSEOP_VERSION', '2.2.5.1' );
43
 
44
  if ( ! defined( 'AIOSEOP_PLUGIN_DIR' ) ) {
45
  define( 'AIOSEOP_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
3
  Plugin Name: All In One SEO Pack
4
  Plugin URI: http://semperfiwebdesign.com
5
  Description: Out-of-the-box SEO for your WordPress blog. <a href="admin.php?page=all-in-one-seo-pack/aioseop_class.php">Options configuration panel</a> | <a href="http://semperplugins.com/plugins/all-in-one-seo-pack-pro-version/?loc=plugins" target="_blank">Upgrade to Pro Version</a> | <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtorbert%40gmail%2ecom&item_name=All%20In%20One%20SEO%20Pack&item_number=Support%20Open%20Source&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8">Donate</a> | <a href="http://semperplugins.com/support/" >Support</a> | <a href="https://www.amazon.com/wishlist/1NFQ133FNCOOA/ref=wl_web" target="_blank" title="Amazon Wish List">Amazon Wishlist</a>
6
+ Version: 2.2.6
7
  Author: Michael Torbert
8
  Author URI: http://michaeltorbert.com
9
  */
30
 
31
  /**
32
  * @package All-in-One-SEO-Pack
33
+ * @version 2.2.6
34
  */
35
 
36
+ if ( ! defined( 'ABSPATH' ) ) return;
37
+
38
  global $aioseop_plugin_name;
39
  $aioseop_plugin_name = 'All in One SEO Pack';
40
  if ( ! defined( 'AIOSEOP_PLUGIN_NAME' ) )
41
  define( 'AIOSEOP_PLUGIN_NAME', $aioseop_plugin_name );
42
 
43
  if ( ! defined( 'AIOSEOP_VERSION' ) )
44
+ define( 'AIOSEOP_VERSION', '2.2.6' );
45
 
46
  if ( ! defined( 'AIOSEOP_PLUGIN_DIR' ) ) {
47
  define( 'AIOSEOP_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
quickedit_functions.js CHANGED
@@ -2,7 +2,7 @@ function aioseop_ajax_edit_meta_form( post_id, meta, nonce ) {
2
  var uform = jQuery('#aioseop_'+meta+'_' + post_id);
3
  var post_title = jQuery('#aioseop_label_' + meta + '_' + post_id).text();
4
  var element = uform.html(); var input;
5
- input = '<textarea id="aioseop_new_'+meta+'_' + post_id + '" style="font-size:10px;width:65%;float:left" rows=2 cols=16>' + post_title + '</textarea>';
6
  input += '<label style="float:left">';
7
  input += '<a class="aioseop_mpc_SEO_admin_options_edit" href="javascript:void(0);" id="aioseop_'+meta+'_save_' + post_id + '" >';
8
  input += '<img src="' + aioseopadmin.imgUrl+'accept.png" border="0" alt="" title="'+meta+'" /></a>';
@@ -10,8 +10,10 @@ function aioseop_ajax_edit_meta_form( post_id, meta, nonce ) {
10
  input += '<img src="' + aioseopadmin.imgUrl+'delete.png" border="0" alt="" title="'+meta+'" /></a>';
11
  input += '</label>';
12
  uform.html( input );
 
13
  jQuery('#aioseop_'+meta+'_cancel_' + post_id).click(function() {
14
  uform.html( element );
 
15
  });
16
  jQuery('#aioseop_'+meta+'_save_' + post_id).click(function() {
17
  var new_meta = jQuery( '#aioseop_new_'+meta+'_' + post_id ).val();
@@ -39,5 +41,7 @@ function handle_post_meta( p, t, m, n ) {
39
  aioseop_sack.runAJAX();
40
  })
41
  jQuery("div#aioseop_"+m+"_"+p).html(loading);
 
 
42
  })
43
  };
2
  var uform = jQuery('#aioseop_'+meta+'_' + post_id);
3
  var post_title = jQuery('#aioseop_label_' + meta + '_' + post_id).text();
4
  var element = uform.html(); var input;
5
+ input = '<textarea id="aioseop_new_'+meta+'_' + post_id + '" style="font-size:13px;width:100%;float:left;position:relative;z-index:1;" rows=4 cols=32>' + post_title + '</textarea>';
6
  input += '<label style="float:left">';
7
  input += '<a class="aioseop_mpc_SEO_admin_options_edit" href="javascript:void(0);" id="aioseop_'+meta+'_save_' + post_id + '" >';
8
  input += '<img src="' + aioseopadmin.imgUrl+'accept.png" border="0" alt="" title="'+meta+'" /></a>';
10
  input += '<img src="' + aioseopadmin.imgUrl+'delete.png" border="0" alt="" title="'+meta+'" /></a>';
11
  input += '</label>';
12
  uform.html( input );
13
+ uform.attr( "class", "aioseop_mpc_admin_meta_options editing" );
14
  jQuery('#aioseop_'+meta+'_cancel_' + post_id).click(function() {
15
  uform.html( element );
16
+ uform.attr( "class", "aioseop_mpc_admin_meta_options" );
17
  });
18
  jQuery('#aioseop_'+meta+'_save_' + post_id).click(function() {
19
  var new_meta = jQuery( '#aioseop_new_'+meta+'_' + post_id ).val();
41
  aioseop_sack.runAJAX();
42
  })
43
  jQuery("div#aioseop_"+m+"_"+p).html(loading);
44
+ jQuery("div#aioseop_"+m+"_"+p).attr( "class", "aioseop_mpc_admin_meta_options" );
45
+
46
  })
47
  };
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: hallsofmontezuma
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtorbert%40gmail%2ecom&item_name=All%20In%20One%20SEO%20Pack&item_number=Support%20Open%20Source&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8
4
  Tags: all in one, all in one seo, all in one seo pack, seo, search engine optimization, google
5
  Requires at least: 3.3
6
- Tested up to: 4.1
7
  Stable tag: trunk
8
 
9
  All in One SEO Pack is a WordPress SEO plugin to automatically optimize your WordPress blog for Search Engines such as Google.
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mrtorbert%40gmail%2ecom&item_name=All%20In%20One%20SEO%20Pack&item_number=Support%20Open%20Source&no_shipping=0&no_note=1&tax=0&currency_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8
4
  Tags: all in one, all in one seo, all in one seo pack, seo, search engine optimization, google
5
  Requires at least: 3.3
6
+ Tested up to: 4.1.1
7
  Stable tag: trunk
8
 
9
  All in One SEO Pack is a WordPress SEO plugin to automatically optimize your WordPress blog for Search Engines such as Google.