From c710ba7e528cb9521b265b4441636e4013329d32 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Thu, 27 Jun 2024 09:32:01 +0200 Subject: [PATCH 1/7] Add `fediverse:creator` support See: https://github.com/mastodon/mastodon/pull/30398 --- opengraph.php | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/opengraph.php b/opengraph.php index cb71393..dfb19ca 100644 --- a/opengraph.php +++ b/opengraph.php @@ -140,6 +140,9 @@ function opengraph_default_metadata() { // twitter card metadata add_filter( 'twitter_card', 'twitter_default_card', 5 ); add_filter( 'twitter_creator', 'twitter_default_creator', 5 ); + + // fediverse creator metadata + add_filter( 'opengraph_metadata', 'openpraph_fediverse_metadata' ); } add_action( 'wp', 'opengraph_default_metadata' ); @@ -468,7 +471,6 @@ function twitter_default_creator( $creator ) { return $creator; } - /** * Output Open Graph tags in the page header. */ @@ -569,6 +571,32 @@ function opengraph_article_metadata( $metadata ) { return $metadata; } +/** + * Add Fediverse support + * + * @see https://github.com/mastodon/mastodon/pull/30398 + */ +function openpraph_fediverse_metadata( $metadata ) { + if ( ! is_singular() ) { + return $metadata; + } + + $post = get_queried_object(); + $author = $post->post_author; + $webfinger = get_the_author_meta( 'fediverse', $author ); + + if ( ! $webfinger ) { + return $metadata; + } + + $webfinger = ltrim( $webfinger, '@' ); + $webfinger = ltrim( $webfinger, 'acct:' ); + + $metadata['fediverse:creator'] = $webfinger; + + return $metadata; +} + /** * Add "twitter" as a contact method @@ -576,6 +604,7 @@ function opengraph_article_metadata( $metadata ) { function opengraph_user_contactmethods( $user_contactmethods ) { $user_contactmethods['twitter'] = __( 'Twitter', 'opengraph' ); $user_contactmethods['facebook'] = __( 'Facebook (Profile URL)', 'opengraph' ); + $user_contactmethods['fediverse'] = __( 'Fediverse (username@host.tld)', 'opengraph' ); return $user_contactmethods; } From e870e32e54dde93b869918d357188428a5f7d86b Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Wed, 3 Jul 2024 00:30:56 +0200 Subject: [PATCH 2/7] use name/content also for the fediverse prefix --- opengraph.php | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/opengraph.php b/opengraph.php index dfb19ca..9e81e0d 100644 --- a/opengraph.php +++ b/opengraph.php @@ -484,16 +484,11 @@ function opengraph_meta_tags() { foreach ( $value as $v ) { // check if "strict mode" is enabled - if ( OPENGRAPH_STRICT_MODE === false ) { - // use "property" and "name" - printf( - '' . PHP_EOL, - esc_attr( $key ), - esc_attr( $v ) - ); - } else { - // use "name" attribute for Twitter Cards - if ( stripos( $key, 'twitter:' ) === 0 ) { + if ( OPENGRAPH_STRICT_MODE === true ) { + if ( // use "name" attribute for Twitter Cards + str_starts_with( $key, 'twitter:' ) || + str_starts_with( $key, 'fediverse:' ) + ) { printf( '' . PHP_EOL, esc_attr( $key ), @@ -506,6 +501,13 @@ function opengraph_meta_tags() { esc_attr( $v ) ); } + } else { + // use "property" and "name" + printf( + '' . PHP_EOL, + esc_attr( $key ), + esc_attr( $v ) + ); } } } @@ -635,3 +637,14 @@ function opengraph_trim_text( $text, $length = 55 ) { return wp_trim_words( $text, $excerpt_length, $excerpt_more ); } + +/** + * str_starts_with function for PHP < 8.0 + * + * @see https://www.php.net/manual/en/function.str-starts-with + */ +if ( ! function_exists( 'str_starts_with' ) ) { + function str_starts_with( $haystack, $needle ) { + return 0 === strncmp( $haystack, $needle, \strlen( $needle ) ); + } +} From 7419fcc05e681796194b2bf06bb4fb9c709d7031 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Wed, 3 Jul 2024 00:46:13 +0200 Subject: [PATCH 3/7] better consistency --- opengraph.php | 64 +++++++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/opengraph.php b/opengraph.php index 9e81e0d..134cd51 100644 --- a/opengraph.php +++ b/opengraph.php @@ -108,6 +108,14 @@ function opengraph_metadata() { $metadata[ "twitter:$property" ] = apply_filters( $filter, '' ); } + $fediverse_properties = array( 'creator' ); + + foreach ( $fediverse_properties as $property ) { + $filter = 'fediverse_' . $property; + + $metadata[ "fediverse:$property" ] = apply_filters( $filter, '' ); + } + return apply_filters( 'opengraph_metadata', $metadata ); } @@ -142,7 +150,7 @@ function opengraph_default_metadata() { add_filter( 'twitter_creator', 'twitter_default_creator', 5 ); // fediverse creator metadata - add_filter( 'opengraph_metadata', 'openpraph_fediverse_metadata' ); + add_filter( 'fediverse_creator', 'fediverse_default_creator' ); } add_action( 'wp', 'opengraph_default_metadata' ); @@ -471,6 +479,34 @@ function twitter_default_creator( $creator ) { return $creator; } + +/** + * Add Fediverse support + * + * @see https://github.com/mastodon/mastodon/pull/30398 + */ +function fediverse_default_creator( $metadata ) { + if ( ! is_singular() ) { + return $metadata; + } + + $post = get_queried_object(); + $author = $post->post_author; + $webfinger = get_the_author_meta( 'fediverse', $author ); + + if ( ! $webfinger ) { + return $metadata; + } + + $webfinger = ltrim( $webfinger, '@' ); + $webfinger = ltrim( $webfinger, 'acct:' ); + + $metadata['fediverse:creator'] = $webfinger; + + return $metadata; +} + + /** * Output Open Graph tags in the page header. */ @@ -573,32 +609,6 @@ function opengraph_article_metadata( $metadata ) { return $metadata; } -/** - * Add Fediverse support - * - * @see https://github.com/mastodon/mastodon/pull/30398 - */ -function openpraph_fediverse_metadata( $metadata ) { - if ( ! is_singular() ) { - return $metadata; - } - - $post = get_queried_object(); - $author = $post->post_author; - $webfinger = get_the_author_meta( 'fediverse', $author ); - - if ( ! $webfinger ) { - return $metadata; - } - - $webfinger = ltrim( $webfinger, '@' ); - $webfinger = ltrim( $webfinger, 'acct:' ); - - $metadata['fediverse:creator'] = $webfinger; - - return $metadata; -} - /** * Add "twitter" as a contact method From 30b53fc56223a0ae90a4375461e7a7c99a8747c9 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Wed, 3 Jul 2024 13:00:17 +0200 Subject: [PATCH 4/7] add docker file to better test --- docker-compose.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8d64f2d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,27 @@ +version: '2' +services: + db: + image: mysql:5.7 + restart: always + environment: + MYSQL_ROOT_PASSWORD: wordpress + MYSQL_DATABASE: wordpress + MYSQL_USER: wordpress + MYSQL_PASSWORD: wordpress + + wordpress: + depends_on: + - db + image: wordpress:latest + links: + - db + ports: + - "8777:80" + volumes: + - .:/var/www/html/wp-content/plugins/opengraph + restart: always + environment: + WORDPRESS_DB_HOST: db:3306 + WORDPRESS_DB_USER: wordpress + WORDPRESS_DB_PASSWORD: wordpress + WORDPRESS_DEBUG: 1 \ No newline at end of file From 258c190112d43eb7dec7df7aea748e6fd195de82 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Wed, 3 Jul 2024 13:00:26 +0200 Subject: [PATCH 5/7] fix restructure --- opengraph.php | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/opengraph.php b/opengraph.php index 134cd51..265509a 100644 --- a/opengraph.php +++ b/opengraph.php @@ -150,7 +150,7 @@ function opengraph_default_metadata() { add_filter( 'twitter_creator', 'twitter_default_creator', 5 ); // fediverse creator metadata - add_filter( 'fediverse_creator', 'fediverse_default_creator' ); + add_filter( 'fediverse_creator', 'fediverse_default_creator', 5 ); } add_action( 'wp', 'opengraph_default_metadata' ); @@ -485,9 +485,9 @@ function twitter_default_creator( $creator ) { * * @see https://github.com/mastodon/mastodon/pull/30398 */ -function fediverse_default_creator( $metadata ) { +function fediverse_default_creator( $creator ) { if ( ! is_singular() ) { - return $metadata; + return $creator; } $post = get_queried_object(); @@ -495,15 +495,13 @@ function fediverse_default_creator( $metadata ) { $webfinger = get_the_author_meta( 'fediverse', $author ); if ( ! $webfinger ) { - return $metadata; + return $creator; } $webfinger = ltrim( $webfinger, '@' ); $webfinger = ltrim( $webfinger, 'acct:' ); - $metadata['fediverse:creator'] = $webfinger; - - return $metadata; + return $webfinger; } From e675152429ea6fb0fd475e32460bce2663958454 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Wed, 3 Jul 2024 13:09:36 +0200 Subject: [PATCH 6/7] version bump --- opengraph.php | 4 ++-- readme.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opengraph.php b/opengraph.php index 265509a..c44582d 100644 --- a/opengraph.php +++ b/opengraph.php @@ -5,7 +5,7 @@ * Description: Adds Open Graph metadata to your pages * Author: Will Norris * Author URI: https://willnorris.com/ - * Version: 1.11.3 + * Version: 1.12.0 * License: Apache License, Version 2.0 * License URI: http://www.apache.org/licenses/LICENSE-2.0.html * Text Domain: opengraph @@ -481,7 +481,7 @@ function twitter_default_creator( $creator ) { /** - * Add Fediverse support + * Default fediverse creator. * * @see https://github.com/mastodon/mastodon/pull/30398 */ diff --git a/readme.txt b/readme.txt index 3582189..8c5571a 100644 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,7 @@ Contributors: willnorris, pfefferle Tags: social, opengraph, ogp, facebook Requires at least: 2.3 Tested up to: 6.5 -Stable tag: 1.11.3 +Stable tag: 1.12.0 License: Apache License, Version 2.0 License URI: https://www.apache.org/licenses/LICENSE-2.0.html From d5bc2ef058fed7a97a924f6ff5b1ea488ace3b44 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Wed, 3 Jul 2024 13:13:08 +0200 Subject: [PATCH 7/7] add changelog --- readme.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/readme.txt b/readme.txt index 8c5571a..a40f6f6 100644 --- a/readme.txt +++ b/readme.txt @@ -62,6 +62,9 @@ The plugin populates the meta 'name' attribute alongside the 'property' attribut Project maintained on github at [willnorris/wordpress-opengraph](https://github.com/willnorris/wordpress-opengraph). += version 1.12.0 (Jul 3, 2024) = + - support `` + = version 1.11.3 (Jun 4, 2024) = - don't return description for password protected posts