Plugin / Complete Open Graph
Alex MacArthurDescription
Description
There’s no shortage of plugins that promise to be THE all-in-one solution for all things SEO. Unfortunately, this often means lack of flexibility, confusing implementation, or just a big, bloated plugin that carries way too many features for your needs.
This plugin is built on an alternative philosophy: do one thing and one thing well. Complete Open Graph provides automatic, comprehensive, just-makes-sense Open Graph management, whether it’s for a simple blog or a complex site with diverse sets of content.
Out of the box, Complete Open Graph generates all the basic tags your site should have, making it ready for social sharing on platforms including Twitter, Facebook, LinkedIn and Google+, and gives you full programmatic access to filter this data as you need.
TL;DR: This plugin does Open Graph. Freaking good Open Graph.
Using the Plugin
Upon activation, Complete Open Graph is ready to generate Open Graph meta tags, with an intuitive set of fallbacks in place. Literally no configuration is required to begin making your site socially shareable.
Available Fields
On each page and post, the following fields are automatically generated, based on available page data. Many of these can be manually set at the page/post level.
- og:site_name
- og:locale
- og:type
- og:title
- og:url
- og:description
- og:image
- og:image:width
- og:image:height
- twitter:card
- twitter:creator
- twitter:title
- twitter:description
- twitter:image
- twitter:url
- twitter:site
- profile:first_name (Currently only displayed on individual author pages.)
- profile:last_name (Currently only displayed on individual author pages.)
Default Settings
As a fallback for values that aren’t filled automatically by a page or post, you can set default values for Open Graph data. If desired, you can force these individual values to be used globally, overriding whatever is set at a page/post level. You’re able to force individual fields, or force all of them at once.
- og:type
- og:title
- og:image
- og:image:width
- og:image:height
- og:description
- twitter:card
- twitter:description
- twitter:creator
- twitter:site
- fb:admins
- fb:app_id
Filters
The complete_open_graph_all_data filter allows the customization of the entire set of Open Graph values, as well as the addition of new meta tags (including those that aren’t Open Graph).
Example for customizing out-of-the-box Open Graph data:
function modify_open_graph_data($data) {
$data['og:site_name']['value'] = 'whatevs';
return $data;
}
add_filter('complete_open_graph_all_data', 'modify_open_graph_data');
Example for adding a standard, old meta tag:
function add_new_open_graph_fields($data) {
$data['keywords']['attribute'] = 'name';
$data['keywords']['value'] = 'keyword1,keyword2,keyword3';
return $data;
}
add_filter('complete_open_graph_all_data', 'add_new_open_graph_fields');
The complete_open_graph_processed_value filter allows you to modify a single field after it’s gone through the progression of priorities. For that reason, it will only be effective on the following fields:
- og:description
- og:title
- og:type
- og:image
- twitter:card
- twitter:title
- twitter:image
- twitter:description
- twitter:creator
Example for manipulating a processed value:
function manipulate_processed_value($value, $field_name) {
if($field_name === 'og:description') {
return 'WHATEVER I WANT.';
}
return $value;
}
add_filter('complete_open_graph_processed_value', 'manipulate_processed_value', 10, 2);
The complete_open_graph_{$tagName} filter allows you to modify a single field by identifying it by name and returning a modified value. These names are the “name” or “property” attributes on the meta tags. See “Available Fields” above for these names.
Example for manipulating a single value by name:
function modify_title($value, $field_name) {
return 'My Newly Modified Title!'
}
add_filter('complete_open_graph_og:title', 'modify_title', 10, 2);
The complete_open_graph_maybe_enable filter allows you to disable tag generation altogether by returning a boolean.
Example for disabling generation altogether:
add_filter('complete_open_graph_maybe_enable', '__return_false');
Example for disabling generation on a specific page:
add_filter('complete_open_graph_maybe_enable', function ($maybeEnable) {
global $post;
if($post->post_name === 'my-page') {
return false;
}
return $maybeEnable;
});
Order of Priority
There’s a fallback system set in place for you to effectively leverage this plugin. Below is the order of priority:
- Filters – Any filters you apply in your code will take priority over any fields you have filled in the admin.
- Forced Global Settings – If you’ve checked the box on these fields on the settings page, they’ll override everything non-filtered.
- Post/Page COG Fields – Filling out the meta box fields on a page or post in the WordPress Admin will give it priority over any default settings (unless they’re forced).
- Post/Page Content – If no specific COG fields on the post/page are set, the post/page content itself will be used. For the Open Graph description, the excerpt will be respected if it’s filled.
- Default COG Settings – Next, the default COG global settings will used to populate Open Graph tags.
- Blog Info – When nothing else is overriding them, Open Graph fields will default to your general WordPress site settings.
After flowing through this order of priority, if there is still no content to be pulled, those respective Open Graph tags will not be generated. So, don’t worry about having extra, useless tags just sitting there in your markup.
Feedback
You like it? Email or tweet me. You hate it? Email or tweet me.
Regardless of how you feel, your review would be greatly appreciated!
Ratings
Rating breakdown
Details Information
Version
First Released
Total Downloads
Wordpress Version
Tested up to:
Require PHP Version:
Tags
Contributors
Languages
The plugin hasn't been transalated in any language other than English.
DIRECTORY DISCLAIMER
The information provided in this THEME/PLUGIN DIRECTORY is made available for information purposes only, and intended to serve as a resource to enable visitors to select a relevant theme or plugin. wpSocket gives no warranty of any kind, express or implied with regard to the information, including without limitation any warranty that the particular theme or plugin that you select is qualified on your situation.
The information in the individual theme or plugin displayed in the Directory is provided by the owners and contributors themselves. wpSocket gives no warranty as to the accuracy of the information and will not be liable to you for any loss or damage suffered by you as a consequence of your reliance on the information.
Links to respective sites are offered to assist in accessing additional information. The links may be outdated or broken. Connect to outside sites at your own risk. The Theme/Plugin Directory does not endorse the content or accuracy of any listing or external website.
While information is made available, no guarantee is given that the details provided are correct, complete or up-to-date.
wpSocket is not related to the theme or plugin, and also not responsible and expressly disclaims all liability for, damages of any kind, arising out of the use, reference to, or reliance on, any information or business listed throughout our site.