\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;