\n"; // Open Graph. printf( '' . PHP_EOL, esc_attr( $title ) ); printf( '' . PHP_EOL, esc_attr( $description ) ); printf( '' . PHP_EOL, $url ); printf( '' . PHP_EOL, esc_attr( $type ) ); printf( '' . PHP_EOL, esc_attr( get_bloginfo( 'name' ) ) ); if ( $image ) { printf( '' . PHP_EOL, esc_url( $image ) ); printf( '' . PHP_EOL, esc_attr( $title ) ); } // Twitter Card. $card_type = $image ? 'summary_large_image' : 'summary'; printf( '' . PHP_EOL, esc_attr( $card_type ) ); printf( '' . PHP_EOL, esc_attr( $title ) ); printf( '' . PHP_EOL, esc_attr( $description ) ); if ( $image ) { printf( '' . PHP_EOL, esc_url( $image ) ); } echo "\n\n"; } /** * Returns a cleaned excerpt / description. */ private static function get_description(): string { if ( is_singular() ) { global $post; $excerpt = has_excerpt() ? get_the_excerpt() : wp_trim_words( wp_strip_all_tags( $post->post_content ), 30 ); return sanitize_text_field( $excerpt ); } $tagline = get_bloginfo( 'description' ); return sanitize_text_field( $tagline ); } /** * Returns the OG image URL. */ private static function get_image(): string { if ( is_singular() && has_post_thumbnail() ) { $src = wp_get_attachment_image_src( (int) get_post_thumbnail_id(), 'large' ); if ( $src ) { return $src[0]; } } // Site-wide fallback: custom logo. $logo_id = get_theme_mod( 'custom_logo' ); if ( $logo_id ) { $src = wp_get_attachment_image_src( (int) $logo_id, 'full' ); if ( $src ) { return $src[0]; } } return ''; } /** * Returns the canonical URL for the current page. */ private static function get_canonical_url(): string { if ( is_singular() ) { return (string) get_permalink(); } if ( is_home() ) { return home_url( '/' ); } return home_url( add_query_arg( array() ) ); } } endif;