{"id":16367518,"url":"https://github.com/alexmacarthur/wp-complete-open-graph","last_synced_at":"2025-10-17T18:48:56.485Z","repository":{"id":57399481,"uuid":"72805355","full_name":"alexmacarthur/wp-complete-open-graph","owner":"alexmacarthur","description":"A WordPress plugin for simple, comprehensive, customizable Open Graph management.","archived":false,"fork":false,"pushed_at":"2019-01-31T19:46:27.000Z","size":3048,"stargazers_count":25,"open_issues_count":4,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-08-16T19:06:11.589Z","etag":null,"topics":["facebook","meta-tags","open-graph","seo","social-media","twitter","wordpress","wordpress-plugin"],"latest_commit_sha":null,"homepage":"https://wordpress.org/plugins/complete-open-graph/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexmacarthur.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-04T02:08:40.000Z","updated_at":"2025-07-08T20:07:58.000Z","dependencies_parsed_at":"2022-09-09T20:00:33.435Z","dependency_job_id":null,"html_url":"https://github.com/alexmacarthur/wp-complete-open-graph","commit_stats":null,"previous_names":["alexmacarthur/complete-open-graph"],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/alexmacarthur/wp-complete-open-graph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmacarthur%2Fwp-complete-open-graph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmacarthur%2Fwp-complete-open-graph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmacarthur%2Fwp-complete-open-graph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmacarthur%2Fwp-complete-open-graph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexmacarthur","download_url":"https://codeload.github.com/alexmacarthur/wp-complete-open-graph/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexmacarthur%2Fwp-complete-open-graph/sbom","scorecard":{"id":182108,"data":{"date":"2025-08-11","repo":{"name":"github.com/alexmacarthur/wp-complete-open-graph","commit":"75817942059f42207cdbc80816dbaf9f0cdb4a18"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"61 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx","Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-rq8g-5pc5-wrhr","Warn: Project is vulnerable to: GHSA-hr2v-3952-633q","Warn: Project is vulnerable to: GHSA-qrmc-fj45-qfc2","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-8r6j-v8pm-fqw3","Warn: Project is vulnerable to: MAL-2023-462","Warn: Project is vulnerable to: GHSA-xf7w-r453-m56c","Warn: Project is vulnerable to: GHSA-44pw-h2cw-w3vq","Warn: Project is vulnerable to: GHSA-jp4x-w63m-7wgm","Warn: Project is vulnerable to: GHSA-c429-5p7v-vgjp","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-4hpf-3wq7-5rpr","Warn: Project is vulnerable to: GHSA-f522-ffg8-j8r6","Warn: Project is vulnerable to: GHSA-2pr6-76vf-7546","Warn: Project is vulnerable to: GHSA-8j8c-7jfh-h6hx","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-282f-qqgm-c34q","Warn: Project is vulnerable to: GHSA-fvqr-27wr-82fm","Warn: Project is vulnerable to: GHSA-4xc9-xhrj-v574","Warn: Project is vulnerable to: GHSA-x5rq-j2xg-h7qm","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-5947-m4fg-xhqg","Warn: Project is vulnerable to: GHSA-779f-wgxg-qr8f","Warn: Project is vulnerable to: GHSA-4xcv-9jjx-gfj3","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-9v62-24cr-58cx","Warn: Project is vulnerable to: GHSA-r8f7-9pfq-mjmv","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-6g33-f262-xjp4","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-7mwh-4pqv-wmr8","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-2m39-62fm-q8r3","Warn: Project is vulnerable to: GHSA-mf6x-7mm4-x2g7","Warn: Project is vulnerable to: GHSA-j44m-qm6p-hp7m","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-884p-74jh-xrg2","Warn: Project is vulnerable to: GHSA-j7fq-p9q7-5wfv","Warn: Project is vulnerable to: GHSA-7p7h-4mm5-852v","Warn: Project is vulnerable to: GHSA-xc7v-wxcw-j472","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T19:03:07.621Z","repository_id":57399481,"created_at":"2025-08-16T19:03:07.621Z","updated_at":"2025-08-16T19:03:07.621Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272219176,"owners_count":24894362,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["facebook","meta-tags","open-graph","seo","social-media","twitter","wordpress","wordpress-plugin"],"created_at":"2024-10-11T02:50:07.924Z","updated_at":"2025-10-17T18:48:51.454Z","avatar_url":"https://github.com/alexmacarthur.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Complete Open Graph\nA WordPress plugin for simple, comprehensive, customizable Open Graph management.\n\n[![WordPress plugin](https://img.shields.io/wordpress/plugin/dt/complete-open-graph.svg)](https://wordpress.org/plugins/complete-open-graph/)\n[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Falexmacarthur%2Fwp-complete-open-graph\u0026via=amacarthur\u0026text=Check%20out%20Complete%20Open%20Graph%2C%20the%20best%20WordPress%20plugin%20for%20managing%20your%20Open%20Graph%20data%21\u0026hashtags=wp%2C%20seo%2C%20social)\n\n## Description\nThere'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.\n\nThis 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.\n\nOut 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.\n\nTL;DR: This plugin does Open Graph. Freaking good Open Graph.\n\n## Installation\n1. Download the plugin and upload to your plugins directory, or install the plugin through the WordPress plugins page.\n2. Activate the plugin on the 'Plugins' page.\n3. (Optional) Use the Settings-\u003eOpen Graph screen to set your default Open Graph data.\n\n## Using the Plugin\nUpon 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.\n\n### Out-of-the-Box Tags\n\n#### Available Fields\nOn 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.\n\n* og:site_name\n* og:locale\n* og:type\n* og:title\n* og:url\n* og:description\n* og:image\n* og:image:width\n* og:image:height\n* twitter:card\n* twitter:creator\n* twitter:title\n* twitter:description\n* twitter:image\n* twitter:url\n* twitter:site\n* profile:first_name (Currently only displayed on individual author pages.)\n* profile:last_name (Currently only displayed on individual author pages.)\n\n#### Default Settings\nAs 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.\n\n* og:type\n* og:title\n* og:image\n* og:image:width\n* og:image:height\n* og:description\n* twitter:card\n* twitter:description\n* twitter:creator\n* twitter:site\n* fb:admins\n* fb:app_id\n\n### Filtering Meta Tags\nThe `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).\n\nExample for customizing out-of-the-box Open Graph data:\n```php\nfunction modify_open_graph_data($data) {\n  $data['og:site_name']['value'] = 'whatevs';\n  return $data;\n}\nadd_filter('complete_open_graph_all_data', 'modify_open_graph_data');\n```\n\nExample for adding a standard, old meta tag:\n```php\nfunction add_new_open_graph_fields($data) {\n    $data['keywords']['attribute'] = 'name';\n    $data['keywords']['value'] = 'keyword1,keyword2,keyword3';\n    return $data;\n}\nadd_filter('complete_open_graph_all_data', 'add_new_open_graph_fields');\n```\n\nThe `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:\n\n* og:description\n* og:title\n* og:type\n* og:image\n* twitter:card\n* twitter:title\n* twitter:image\n* twitter:description\n* twitter:creator\n\nExample for manipulating a processed value:\n```php\nfunction manipulate_processed_value($value, $field_name) {\n    if($field_name === 'og:description') {\n        return 'WHATEVER I WANT.';\n    }\n    return $value;\n}\nadd_filter('complete_open_graph_processed_value', 'manipulate_processed_value', 10, 2);\n```\n\nThe `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.\n\nExample for manipulating a single value by name:\n```php\nfunction modify_title($value, $field_name) {\n    return 'My Newly Modified Title!'\n}\n\nadd_filter('complete_open_graph_og:title', 'modify_title', 10, 2);\n```\n\nThe `complete_open_graph_maybe_enable` filter allows you to disable tag generation altogether by returning a boolean.\n\nExample for disabling generation altogether:\n```php\nadd_filter('complete_open_graph_maybe_enable', '__return_false');\n```\n\nExample for disabling generation on a specific page:\n```php\nadd_filter('complete_open_graph_maybe_enable', function ($maybeEnable) {\n\tglobal $post;\n\n\tif($post-\u003epost_name === 'my-page') {\n\t\treturn false;\n\t}\n\n\treturn $maybeEnable;\n});\n```\n\n### Order of Priority\nThere's a fallback system set in place for you to effectively leverage this plugin. Below is the order of priority:\n\n1. *Filters* - Any filters you apply in your code will take priority over any fields you have filled in the admin.\n2. *Forced Global Settings* - If you've checked the box on these fields on the settings page, they'll override everything non-filtered.\n3. *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).\n4. *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.\n5. *Default COG Settings* - Next, the default COG global settings will used to populate Open Graph tags.\n6. *Blog Info* - When nothing else is overriding them, Open Graph fields will default to your general WordPress site settings.\n\nAfter 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.\n\n### Changelog\n\n#### 1.0.1\n* Initial public release.\n\n#### 1.0.2\n* Improve documentation.\n* Remove bits of logic that require at least PHP 7.\n\n#### 2.0.0\n* Change `cog_open_graph_data` filter name to `complete_open_graph_all_data`.\n* Add `complete_open_graph_single_value` filter.\n* Add ability to force global values on all pages.\n* Instead of storing global settings in individual option keys, all settings are serialized in the `complete_open_graph` key, making for a slightly tidier database.\n\n#### 2.1.0\n* Add support for `twitter:card` (currently only supports \"summary\").\n* Add support for `twitter:creator`.\n* Add support for `twitter:site`.\n* Add support for `og:image:width`.\n* Add support for `og:image:height`.\n\n#### 2.1.1\n* Add proper \u003chtml\u003e prefix for Open Graph \u0026 Facebook parsing.\n\n#### 2.1.2\n* Strip shortcodes from generated Open Graph content.\n\n#### 2.1.3\n* Fix incorrectly rendered tags for `fb:app_id` and `fb:admins`.\n\n#### 2.1.4\n* Fix bug producing errors when $post object is not set.\n\n#### 3.0.0\n* Display default data on pages where post object is not set (like 404 pages).\n* Fix bug preventing image size tags from being rendered.\n* Strip style and script tags from generated Open Graph descriptions.\n* Rename `complete_open_graph_single_value` filter to `complete_open_graph_processed_value`.\n* Add `complete_open_graph_{$tagName}` filter to target specific fields.\n* Preserve HTML entities in generated content.\n* Default to `large` image sizes for images uploaded before plugin was installed.\n\n#### 3.0.1\n* Fix bug which was causing the failure to properly decode all quotation marks.\n\n#### 3.0.2\n* Fix incorrect reference to `$GLOBALS` superglobal.\n* Fix miscellaneous bugs caused when `post` object wasn't set.\n* Fix bug involving specific use of `empty()` function which is unsupported in older versions of PHP and causing a few errors.\n* Fix bug with generating `og:image` tags on blog list pages.\n* Make performance improvements to option lookups.\n\n#### 3.0.3\n* Fix warning with using `loadHTML()` for parsing certain types of content.\n* Correctly add space after line breaks are removed from sentances ending in `?` and `!`.\n\n#### 3.1.0\n* Fix styling issue causing strange layout of COG metabox.\n* Add support for different Twitter card types.\n\n#### 3.1.1\n* Properly encode special characters into HTML entities.\n\n#### 3.1.2\n* Add checks for image existence to avoid potential errors.\n\n#### 3.2.0\n* Respect post/page excerpt when generating Open Graph descriptions.\n* Add feature to force all fallback settings at once.\n* Improve image filtering to prevent potential bugs.\n\n#### 3.2.1\n* Fix bug pulling Open Graph data from first post on any archive page; instead, it falls back to global settings.\n* Slightly improve efficiency of generating Open Graph markup for each page.\n\n#### 3.2.2\n* Uses the `get_locale()` method instead of hard-coding the value for the og:locale meta tag.\n\n#### 3.2.3\n* Enqueue WP media scripts with better scope and more flexibility.\n* Put `CompleteOpenGraph\\App` into `$GLOBALS` to allow easier filtering and access within themes and plugins.\n\n#### 3.2.4\n* Fix bug causing console error to be thrown on pages that didn't have the `media-upload` script enqueued.\n\n#### 3.2.5\n* Fix bug causing errors when invalid attachment IDs were passed to Open Graph parser.\n* Add version to assets URLs to break bust cache of outdated files.\n\n#### 3.2.6\n* Fix incorrect reference to class property.\n\n#### 3.2.7\n* Set up basic unit testing for improved code reliability.\n* Improve handling of default values and how they're handled if left empty.\n\n#### 3.3.0\n* Fix errors being thrown in PHP versions under 5.6.\n* Add filter to disable Open Graph tags per page.\n\n#### 3.3.1\n* Improve the logic (and respective efficiency) of determining how image meta tags are generated.\n\n#### 3.4.0\n* Improve code organization under the hood.\n* Display \"profile:first_name\" and \"profile:last_name\" meta tags on author pages.\n\n#### 3.4.1\n* Fix constant-related bug for installations using older versions of PHP.\n\n#### 3.4.2\n* Removes use of `array_filter` that relies on ARRAY_FILTER_USE_KEY constant for greater PHP backwards compatibility.\n\n#### 3.4.3\n* Fixes the generation of the `og:type` tag, which was not displaying at all.\n* On author archive pages, if author has an avatar image, use that as OG image.\n\n#### 3.4.4\n* Fix sizing issue with uploaded images less than 1200px wide.\n* Require that selected OG images be, at minimum, 200px x 200px.\n* Ensure that OG URLs are never relative.\n\n#### 3.4.5\n* Fixes the attribute used to set up `twitter:description` tags.\n* If no explicit `twitter:description` exists on an archive page, use the `og:description`.\n\n## Feedback\nYou like it? [Email](mailto:alex@macarthur.me) or [tweet](http://www.twitter.com/amacarthur) me. You hate it? [Email](mailto:alex@macarthur.me) or [tweet](http://www.twitter.com/amacarthur) me.\n\nRegardless of how you feel, your review would be greatly appreciated!\n\n## Development Notes\n\n### Running Tests\nAfter running `composer install` and configuring the `tests/bootstrap.php` file to load WordPress, run the following command inside your container to run all tests.\n\n`vendor/bin/phpunit`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexmacarthur%2Fwp-complete-open-graph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexmacarthur%2Fwp-complete-open-graph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexmacarthur%2Fwp-complete-open-graph/lists"}