sybrew / the-seo-framework Goto Github PK
View Code? Open in Web Editor NEWThe SEO Framework WordPress plugin.
Home Page: https://theseoframework.com/
License: GNU General Public License v3.0
The SEO Framework WordPress plugin.
Home Page: https://theseoframework.com/
License: GNU General Public License v3.0
From ctw12's support thread:
qTranslate X subdirectory option currently adds multiple sub-directories to the Canonical URL since The SEO Framework 2.7.0 update's URL generation rework.
Expected:
http://example.com/en/
Actually output:
http://example.com/en/en/en/
I'm used to having images get indexed explicitly via the sitemap, but noticed they don't appear in The SEO Framework's sitemap. It made me wonder if it's even necessary to explicitly list them, or if bots consume them reliably directly from the posts. What do you think, @sybrew?
Hi,
Is there any way we can implement height and width in og:image? The importance of this is to allow facebook to precache the image if these are correctly set.
more info here:
https://developers.facebook.com/docs/sharing/best-practices
thanks
Hello
I installed the plugin on one of my sites and I'm enjoying the performance.
But I have a problem. When I share a post on social networks (Facebook, G +, Twitter) the highlighted image does not appear in the post sharing.
If you could help me solve this problem I would be very grateful.
From: Max' support topic
On Firefox, using bbPress, within the admin area, the topic title is stacked when the SEO bar is present.
View: /wp-admin/edit.php?post_type=topic
.
Temporarily resolution: Disable the SEO bar from displaying through Screen Options.
Currently, The SEO Framework can't detect BuddyPress pages.
This means, for instance, the canonical URL will point towards the homepage.
For this to work, a new layer of compatibility has to be written; as also has been for WooCommerce.
The current BuddyPress page ID has to be detected as well.
BuddyPress has an array of functions for this; but it's very annoying to work with as it invokes all kinds of debugging errors π‘. Oh well...
when WP is installed in a subdirectory such as on a bedrock install, robots.txt shows:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
expected output is:
User-agent: *
Disallow: /wp/wp-admin/
Allow: /wp/wp-admin/admin-ajax.php
example from a bedrock install that's not running this plugin: https://roots-example-project.com/robots.txt
wordpress core uses the site URL instead of home URL for the admin paths: https://github.com/WordPress/WordPress/blob/a800cf654b7ed54fbb329fdce865672f300b1e79/wp-includes/functions.php#L1319-L1322
From kiets' review:
When having lots and lots of posts, the transients can and will flood the database.
In order to solve this, a new option has to be created:
Explaining what it does, and maybe auto-enable this when more than an "X" amount of posts have been found (action: 'activate_' . THE_SEO_FRAMEWORK_PLUGIN_BASENAME
) should be an ideal way to handle such situations.
See #39 (General settings metabox) for its location and implementation.
From: Eelco's plugin review
New feature for options that allow custom titles and descriptions for non-editable query types, like 404 and search.
SEO > Social Media Settings > Post Dates > Home Page
The part I think may be wrong, or I'm misunderstanding how that works is the "by disabling
the"... Should it not be "by enabling
the following options"?
Also where do you take that time from? the time that page was last updated/published or based on recent posts published dates? Just wondering as I'm starting to look into migrating some clients to this plugin.
Cheers
When I try and make deploys from staging to production in WPEngine I get the attached message:
I deactivated and reactivated all my plugins one by one and also had a WPEngine technician look into this. We have determined that the issue is with the SEO Framework plugin. Please resolve! We love this plugin!
Hi there,
you're doing a great job! Thank you very much for that very useful and clean plugin. Looking forward to see much more in the future like a global settings page for multisite networks. :)
However I found out that it breaks the search results if Relevanssi is activated. I was happy to find the solution in another answer here on GutHub and want to go sure that you're aware of this so other users find the issue solution as well.
Adding
add_action( 'init', 'seo_remove_search_filter' ); function seo_remove_search_filter() { if ( function_exists( 'the_seo_framework' ) ) remove_action( 'pre_get_posts', array( the_seo_framework(), 'search_filter' ), 999 ); }
to functions.php let's Relevanssi work as expected. Maybe you can add a check for common search enhancement plugins like Relevanssi.
Best regards,
Philipp
Since there's currently no way to modify the description created in the plugin I'd like to stop the og:description
and twitter:description
tags from being created and run my own. However, when I turn social off using the the_seo_framework_description_args
filter it only empties the meta tags and still displays them in the HTML.
Expected behavior would be for the tags to no longer exist in the HTML, allowing me to use my own.
Happy to create a patch and submit a PR if this is something you'd like to pursue π
From: Levente's question on WordPress.
When multiple categories are assigned to a post, the primary category is automatically chosen first of all set categories in alphabetic order.
The goal is to be able to select the primary category, as per the wish of the post author or editor.
Pros:
Cons:
perhaps I am missing where this is at or documented but it seems that there is not an option to add an open graph image fallback for pages/posts without a featured image.
A feature that also has been asked for a few times:
An exporter and importer for SEO Settings.
Particularly handy for when you host many alike websites, or if you wish to migrate to a clean environment.
Planned as a Free Extension π.
Note to self: Allow missing settings merge to happen automatically with defaults.
More importantly: Don't forget to state that it's best to grab an export file where TSF version numbers match.
If there is a featured image on a post or page, shouldn't the json-ld generated markup create an "image" entry?
From Col_Blimp's support question:
Sticky bbPress topics aren't added to the sitemap.
Still requires confirmation. Will check for 2.8.x release.
From Bichareh's support topic:
Pagination is not correctly detected by The SEO Framework when it's queried by page builders, such as Visual Composer.
This is because (for example) Visual Composer adds its pagination Just in Time, within the appropriate element. This is too late for The SEO Framework to detect.
To support this, an extra module needs to be added:
aside
tags, among other scenario's as image carousels.Because of 4., I believe this is best handled within the Page Builder β be it either through their plugin, or through their interface externally β, so that users who set up the pagination are aware of this behavior.
Hi,
I'm working with an edge case where I'm not using the ?s=
search parameter for my site but there's little control for changing the potential action schema.
Is there an objection to adding a filter for the $target
variable or maybe the $json
variable for full control?
From MassimoD's bug report:
When performing a search action on any WordPress installation, by default, the canonical URL will point to the first post/page result found.
This is not beneficial when the user wants Search Pages to be indexed by Search Engines. But the feature (as it should be) wasn't either.
Also, allowing Search Result pages to be indexed is a major concern for SEO issues: Duplicated Content.
Finding items throughout the site should never be handled through the sitemap or local search, but should instead be handled through WordPress Tags and Categories.
Therefore, this bug (it wasn't intended to be this way), can actually be seen as a positive feature.
In 2.6.5 it was promised to always point to the home page. Such alterations were assumed, but not made.
I need feedback on this one. And I possibly think this can only be conveniently solved by adding options.
See #20 for this more focused, but related, feature request.
I know, many topic labels have been added, but this "bug" covers a wide spectrum.
Feature to add a general metabox, including:
This change should reset the SEO Settings page metaboxes order to maintain a consistent experience.
Hello
How can we disable indexing of all single pages of a specific custom post?
Thanks,
Aldo
Here is a sample sitemap with 708 entries: https://www.die-kellerkinder.eu/sitemap.xml
I would like to reduce that number and NOT have replies indexed as they are the majority of those entries.
Any way to achieve this?
Trying to figure out why the generated robots.txt
file throws a 404 error code.
I can view it w/ my browser but Google search console and Fetch show it as 404.
Thoughts?
WP: 4.6.1
Plugin: 2.7.0
PHP 7.0.12-1+deb.sury.org~trusty+1
I have a small WooCommerce store. At the time of this issue submission I have 81 categories. Some of the categories I use the generated title and some I create a custom title because of the length. The issue is SEO framework says the title is too long for the custom titles I created when they are between 50 - 55 characters. This doesn't happen on all of the custom titles only some.
AFAIK the post/page title will also have the site title on L or R if it's automated (aka you didn't manually write your post seo title). I'm having it show up regardless if I manually add my title to the "Post SEO Settings" > "Custom Post Title". I'd like it to not do that... or give me an option to disable that?
WP: 4.6.1
Plugin: 2.7.0
PHP 7.0.12-1+deb.sury.org~trusty+1
Hi sybrew,
Quick and dirty: Running into a site search conflict when SEO Framework is active that returns 0 content for any s= and from what I can tell it's because of the meta_query arrary that gets set in search.class.php LN 82. I think. Maybe.
Long explanation below, b/c I'm not sure exactly what's going on and code about as well as a caveman with a keyboard. So I manage a site that lives within a WP Multisite within a university environment that has some custom post types and ACF fields. Our multisite admin introduced me to SEO Framework at some point earlier this year and quickly came to appreciate the level of control it provided.
One of our homebrew cpts is a course post that uses ACF for session/date info and an shared all posttype 'Location' taxonomy to create a targeted search for just courses with some options to filter. Initially I was using Ultimate WP Search Query Filter plugin to generate this and embed, but apparently on our multisite AJAX is locked down, and the search won't function for non-University logged in users, which was an issue since our courses are for public at large/industry segments. Sitewide search worked fine, though I could never get UWPSQF to use the non-AJAX search results option, so had to dump it and try building a custom search.
Thus I set to cobbling together a search form that throws filter options via url to a custom search.php for the course post_type and then hits the loop with whichever arguments are provided. Things looked dandy testing in my dev space and when I pushed the theme updates to production, search didn't return anything.
So dumping wp_query on both I ended up with the logs here:
multidev-shingo-wp-query.txt
production-shingo-wp-query.txt
So I see the main differences between the two as:
`
https://multidev.eos.ncsu.edu/ncjones4/?s=shingo
MultiDev's request:
[request] => SELECT SQL_CALC_FOUND_ROWS DISTINCT wp_17_posts.ID FROM wp_17_posts LEFT JOIN wp_17_postmeta ON wp_17_posts.ID = wp_17_postmeta.post_id WHERE 1=1 AND (((wp_17_posts.post_title LIKE '%shingo%') OR (wp_17_postmeta.meta_value LIKE '%shingo%') OR (wp_17_posts.post_excerpt LIKE '%shingo%') OR (wp_17_posts.post_content LIKE '%shingo%'))) AND wp_17_posts.post_type IN ('post', 'page', 'attachment', 'courses', 'staff', 'project', 'tribe_venue', 'tribe_events') AND (wp_17_posts.post_status = 'publish' OR wp_17_posts.post_status = 'acf-disabled' OR wp_17_posts.post_status = 'private') ORDER BY wp_17_posts.post_title LIKE '%shingo%' DESC, wp_17_posts.post_date DESC LIMIT 0, 5
[posts] => Array ( ...
https://www.ies.ncsu.edu/?s=shingo&debug
Production's request:
[request] => SELECT SQL_CALC_FOUND_ROWS DISTINCT wp_15_posts.ID FROM wp_15_posts LEFT JOIN wp_15_postmeta ON (wp_15_posts.ID = wp_15_postmeta.post_id AND wp_15_postmeta.meta_key = 'exclude_local_search' ) LEFT JOIN wp_15_postmeta ON wp_15_posts.ID = wp_15_postmeta.post_id WHERE 1=1 AND (((wp_15_posts.post_title LIKE '%shingo%') OR (wp_15_postmeta.meta_value LIKE '%shingo%') OR (wp_15_posts.post_excerpt LIKE '%shingo%') OR (wp_15_posts.post_content LIKE '%shingo%'))) AND (
(
wp_15_postmeta.post_id IS NULL
)
) AND wp_15_posts.post_type IN ('post', 'page', 'attachment', 'courses', 'staff', 'project', 'stlr_place', 'tribe_venue', 'tribe_events') AND (wp_15_posts.post_status = 'publish' OR wp_15_posts.post_status = 'acf-disabled' OR wp_15_posts.post_author = 35 AND wp_15_posts.post_status = 'private') GROUP BY wp_15_posts.ID ORDER BY wp_15_posts.post_title LIKE '%shingo%' DESC, wp_15_posts.post_date DESC LIMIT 0, 5
[posts] => Array
(
)
Post meta appears in the dump in a couple of spots on Production::
LN 108
[meta_query] => Array
(
[0] => Array
(
[0] => Array
(
[key] => exclude_local_search
[value] => 1
[type] => CHAR
[compare] => NOT EXISTS
[relation] => AND
)
)
)
...
LN 168
[meta_query] => WP_Meta_Query Object
(
[queries] => Array
(
[0] => Array
(
[0] => Array
(
[key] => exclude_local_search
[value] => 1
[type] => CHAR
[compare] => NOT EXISTS
[relation] => AND
)
[relation] => OR
)
[relation] => OR
)
[relation] => AND
[meta_table] => wp_15_postmeta
[meta_id_column] => post_id
[primary_table] => wp_15_posts
[primary_id_column] => ID
[table_aliases:protected] => Array
(
[0] => wp_15_postmeta
)
[clauses:protected] => Array
(
[wp_15_postmeta] => Array
(
[key] => exclude_local_search
[value] => 1
[type] => CHAR
[compare] => NOT EXISTS
[relation] => AND
[alias] => wp_15_postmeta
[cast] => CHAR
)
)
[has_or_relation:protected] =>
)
[date_query] =>
...
`
And when I deactivate SEO Framework and voila, search starts returning things in production again.
So obvs I failed to notice SEO Framework wasn't activated in multidev. Okay. And for some reason &debug doesn't work on multidev, but I dropped a print_r( $wp_query ); in the search.php so I could get the log there.
None of the content in the site has exclude_local_search enabled.
So, not sure why the value of that key is being set as 1. And I'd like to keep using the SEO Framework plugin. I don't anticipate we'd need to hide anything in the site from search, so what I'd kinda like to test is maybe overriding that value to always 0 and testing multidev to see if that's enough to fetch results.
Alternatively I may have done something stupid with search.php and search-courses.php such that's conflicting with SEO Framework, but I don't immediately see it. I've stuck the child theme on my personal git here https://github.com/ndyjones/ies-divi-child if it helps track whatever the hell I've done.
Any insights or help you could provide would be much appreciated.
From artistic1's reply on w.org.
I install WP on subfolder /blog/
http://abc.com/blog/
But some meta url wrong
<meta property="og:url" content="http://abc.com/category/linux/" />
<link rel="canonical" href="http://abc.com/category/linux/" />
Right url is
`
With The SEO Framework 2.7.0, when you try to save your menu it will perform a wp_die()
.
Message: "Are you sure you want to do this?"
Theme: Genesis 2.3.x
WordPress: 4.6.1 MultiSite
Further testing is required.
Can we have a filter that won't output meta property="og:image"
For a Facebook, image needs to have width and height properties and it's much easier to replace the default output with custom one.
The even better option would be to have a filter to disable the whole 'og' section.
For dynamic pages the og
properties section has to be custom build and the main issue I'm having is to disable default output. The the_seo_framework_output_canonical
filter works as expected. The other filters do not follow this pattern.
Firefox (Gecko) is an awesome browser, used by millions of tech-savvy users.
Unfortunately, it still has a back-log of bugs with tables. Which prevents a good layout output with the SEO Bar outputted by The SEO Framework.
See these two related Bugzilla reports:
To solve this issue, we need to find a way to either:
a) Completely redesign the SEO Bar.
b) Use a "hack" to solve this issue, either browser-targeted or with the use of flex-box, etc.
c) Suggestions?
With a) we mean that we make it smaller, auto-expanding, etc.
With b) we mean that we solve this bug by adding CSS targeted at Gecko browsers.
Alas, with b), any resolution so far breaks layouts in other tables, like the ones from bbPress, WooCommerce, and other third party plugins that output their own custom tables. See this WordPress.org support post, for example.
Eventually, what we wish to achieve is this:
Hello
Our site is multilingual so we use the plugin at wpml.org for translation.
The generated sitemap does not set the correct translated slugs in the tag.
This is the base language:
<url>
<loc>https://domain.ch/kontakt/</loc>
<lastmod>2016-09-13T10:49+02:00</lastmod>
<priority>0.9</priority>
</url>
And this is the translated version:
<url>
<loc>https://domain.ch/en/kontakt/</loc>
<lastmod>2016-09-13T16:32+02:00</lastmod>
<priority>0.9</priority>
</url>
As you can see "kontakt" is not change to the slug "contact" we have set for this page.
How can we solve this? Google Search Console returns errors, as the sitemap contains erroneous urls.
Let me know if you need the plugin to solve the issue.
Thanks,
Aldo
I would like to be able to modify the description text with my own custom description text - ideally on a social and page basis. I'm thinking functionality similar to the_seo_framework_pre_add_title
or the_seo_framework_pro_add_title
where you could simply insert your own text and overwrite.
The reason is that we're running a metabox for our own social media description that the client can overwrite - we have it in a particular flow that's easy to manage and edit and would prefer to keep our description.
Happy to write a patch and submit if this is something you'd like to pursue.
From Philipp's support question.
When wp-cron is fired, no post meta gets saved. This is because we don't maintain Post Meta revision data.
To resolve this, and prevent plugin conflicts, we could save post meta in a revision, from which the data propagates to the actual outcome.
In order to do so, more investigation on this actual behavior needs to precede.
Meta tags for og:image
and twitter:image:src
use the site icon instead of the image contained in a post. See attached screenshot with the Twitter cards validator. Also applies to sharing via WhatsApp, etc.
I was testing with a post on my blog. Running WordPress 4.5.1, with plugin version 2.5.2.4.
Feature:
Add an easy interface (like cPanel's DNS editor) to manage robots.txt "file" output. Only to be working when no static file is present. i.e. Only by the use of filters.
I do not want to over-write files nor leave permanent marks.
Planned as a free extension π.
Hi,
I just tried using the add_filter( 'the_seo_framework_ldjson_plugin_detected', '__return_false' );
to disable schema output as I am using the schema plugin for it but with no luck.
From Col_Blimp's support question:
Ultimate Member user profile titles aren't outputted correctly anymore.
This used to be fixed as of version 2.5.2 - Data Feed Influx.
Still requires confirmation. Will check for 2.8.x release.
Yandex is a major search engine in Russia. From their Webmaster API docs:
<meta name='yandex-verification' content='4ea8e18ffda14271' />
A feature that has been requested so many times, I simply can't ignore it anymore with the philosophy: "Use what WordPress gives you".
Planned for 2.8.0 release.
Hi,
I would like to suggest adding an optional checkbox to include an archive/category do sitemap.xml.
The user could also choose some categories to include/exclude.
Regards
Pedro Mendonça
I have an issue where the og:description is ignoring the manually written description and excerpts and is instead using the first paragraph of text. The twitter:description pulls the correct info though. Any suggestions on how to fix this?
From: Shaikh's support question.
Add a way to flush the object cache (wp_cache_delete()
) from a particular post or page on update/save.
This can use the same mechanism as used for transient caches.
Maybe: Rename the Transients class to Cache class.
Hello,
just switched to this plugin from YOAST-SEO and it is just soo much better :)
One problem I am facing on a big WooCommerce install is that the products page in the admin panel is really slowing down.
plugin off: TOTAL QUERIES: 82 TOTAL QUERY TIME: 26.0 ms
plugin active: TOTAL QUERIES: 124 TOTAL QUERY TIME: 930.5 ms
Seems like most the calls are like the following:
SELECT option_value FROM wp_options WHERE option_name = '_transient_timeout_tsf_tdir_0_1' LIMIT 1
WP_List_Table->display, WP_List_Table->display_rows_or_placeholder, WP_Posts_List_Table->display_rows, WP_Posts_List_Table->_display_rows, WP_Posts_List_Table->single_row, WP_List_Table->single_row_columns, WP_Posts_List_Table->column_default, do_action('manage_posts_custom_column'), AutoDescription_DoingItRight->seo_bar, AutoDescription_DoingItRight->post_status, AutoDescription_DoingItRight->the_seo_bar_page, AutoDescription_DoingItRight->the_seo_bar_title_notice, AutoDescription_DoingItRight->the_seo_bar_data, AutoDescription_DoingItRight->the_seo_bar_post_data, AutoDescription_Generate_Title->title, AutoDescription_Transients->set_theme_dir_transient, get_transient, get_option
p.s..: it is a fairly big shop ~ 25000 products * 2 languages and thousands of attributes
Could you please have a look at this or tell me if there is anything I can do to speed things up?
Thank you and all the best,
Lukas
Despite what Google officially is saying, it seems 302 pass more link juice than 301. See http://www.linkresearchtools.com/case-studies/11-things-didnt-know-links-redirects/
Any chance you can add a 302 redirect option in addition to the 301 redirect option?
Hello,
I'd like to add some of the meta information within other tags or display on the page itself..
How can I print the title and description, or any of the other fields.
E.G php bloginfo('description');
Thanks, Stephen
Hello
It would be great if we where able to add meta descriptions in the backend for custom post type archive pages. Without description the archive page does not appear in the Sitelinks section in the Google results.
Thanks!
Aldo
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.