Commit realizado el 12:13:52 08-04-2024
This commit is contained in:
@@ -0,0 +1,208 @@
|
||||
<?php
|
||||
/**
|
||||
* Add the OpenGraph tags to the header.
|
||||
*
|
||||
* @since 0.9.0
|
||||
* @package RankMath
|
||||
* @subpackage RankMath\OpenGraph
|
||||
* @author Rank Math <support@rankmath.com>
|
||||
*
|
||||
* @copyright Copyright (C) 2008-2019, Yoast BV
|
||||
* The following code is a derivative work of the code from the Yoast(https://github.com/Yoast/wordpress-seo/), which is licensed under GPL v3.
|
||||
*/
|
||||
|
||||
namespace RankMath\OpenGraph;
|
||||
|
||||
use RankMath\Post;
|
||||
use RankMath\Term;
|
||||
use RankMath\User;
|
||||
use RankMath\Helper;
|
||||
use RankMath\Paper\Paper;
|
||||
use RankMath\Traits\Hooker;
|
||||
use RankMath\Helpers\Str;
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
/**
|
||||
* OpenGraph class.
|
||||
*/
|
||||
class OpenGraph {
|
||||
|
||||
use Hooker;
|
||||
|
||||
/**
|
||||
* Holds network slug.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $network = '';
|
||||
|
||||
/**
|
||||
* Hold meta_key prefix.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $prefix = '';
|
||||
|
||||
/**
|
||||
* Schema type.
|
||||
*
|
||||
* @var bool|string
|
||||
*/
|
||||
protected $schema = false;
|
||||
|
||||
/**
|
||||
* The Constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->action( 'rank_math/head', 'output_tags', 30 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Main OpenGraph output.
|
||||
*/
|
||||
public function output_tags() {
|
||||
wp_reset_query();
|
||||
|
||||
/**
|
||||
* Hook to add all OpenGraph metadata
|
||||
*
|
||||
* The dynamic part of the hook name. $this->network, is the network slug.
|
||||
*
|
||||
* @param OpenGraph $this The current opengraph network object.
|
||||
*/
|
||||
$this->do_action( "opengraph/{$this->network}", $this );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get title
|
||||
*
|
||||
* @return bool|string
|
||||
*/
|
||||
public function get_title() {
|
||||
$title = $this->_title();
|
||||
if ( $title && Helper::get_settings( 'titles.capitalize_titles' ) ) {
|
||||
$title = Str::mb_ucwords( $title );
|
||||
}
|
||||
|
||||
return $title ? $title : Paper::get()->get_title();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get title.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function _title() {
|
||||
$key = $this->prefix . '_title';
|
||||
|
||||
if ( Post::is_simple_page() ) {
|
||||
return Post::get_meta( $key, Post::get_page_id() );
|
||||
}
|
||||
|
||||
if ( is_front_page() ) {
|
||||
return Helper::replace_vars( Helper::get_settings( 'titles.homepage_facebook_title' ) );
|
||||
}
|
||||
|
||||
if ( is_category() || is_tax() || is_tag() ) {
|
||||
return Term::get_meta( $key );
|
||||
}
|
||||
|
||||
return is_author() ? User::get_meta( $key ) : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get description.
|
||||
*
|
||||
* @return bool|string
|
||||
*/
|
||||
public function get_description() {
|
||||
$desc = false;
|
||||
$key = $this->prefix . '_description';
|
||||
|
||||
if ( Post::is_simple_page() ) {
|
||||
$desc = Post::get_meta( $key, Post::get_page_id() );
|
||||
$desc = '' !== $desc ? $desc : $this->fallback_description( 'get_the_excerpt' );
|
||||
} elseif ( is_front_page() ) {
|
||||
$desc = Helper::replace_vars( Helper::get_settings( 'titles.homepage_facebook_description' ) );
|
||||
} elseif ( is_category() || is_tag() || is_tax() ) {
|
||||
$desc = Term::get_meta( $key );
|
||||
$desc = '' !== $desc ? $desc : $this->fallback_description( 'term_description' );
|
||||
} elseif ( is_author() ) {
|
||||
$desc = User::get_meta( $key );
|
||||
}
|
||||
|
||||
return $desc ? $desc : $this->fallback_description();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a fallback description.
|
||||
*
|
||||
* @param string $callback Function name to call.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function fallback_description( $callback = false ) {
|
||||
$desc = Paper::get()->get_description();
|
||||
if ( '' === $desc && $callback ) {
|
||||
$desc = $callback();
|
||||
}
|
||||
|
||||
return $desc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal function to output social meta tags.
|
||||
*
|
||||
* @param string $property Property attribute value.
|
||||
* @param string $content Content attribute value.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function tag( $property, $content ) {
|
||||
$og_property = str_replace( ':', '_', $property );
|
||||
/**
|
||||
* Allow developers to change the content of specific social meta tags.
|
||||
*
|
||||
* The dynamic part of the hook name. $this->network, is the network slug
|
||||
* and $og_property, is the property which we are outputting.
|
||||
*
|
||||
* @param string $content The content of the property.
|
||||
*/
|
||||
$content = $this->do_filter( "opengraph/{$this->network}/$og_property", $content );
|
||||
if ( empty( $content ) || ! is_scalar( $content ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$tag = 'facebook' === $this->network ? 'property' : 'name';
|
||||
$escaped_value = esc_attr( $content );
|
||||
if ( false !== filter_var( $content, FILTER_VALIDATE_URL ) ) {
|
||||
$escaped_value = esc_url_raw( $content );
|
||||
}
|
||||
printf( '<meta %1$s="%2$s" content="%3$s" />' . "\n", $tag, esc_attr( $property ), $escaped_value );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Overlay Image URL
|
||||
*
|
||||
* @param string $network The social network.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_overlay_image( $network = 'facebook' ) {
|
||||
if ( is_singular() ) {
|
||||
return Helper::get_post_meta( "{$network}_enable_image_overlay" ) ? Helper::get_post_meta( "{$network}_image_overlay", '', 'play' ) : '';
|
||||
}
|
||||
if ( is_category() || is_tag() || is_tax() ) {
|
||||
return Helper::get_term_meta( "{$network}_enable_image_overlay" ) ? Helper::get_term_meta( "{$network}_image_overlay", 0, '', 'play' ) : '';
|
||||
}
|
||||
|
||||
if ( is_author() ) {
|
||||
return Helper::get_user_meta( "{$network}_enable_image_overlay" ) ? Helper::get_user_meta( "{$network}_image_overlay", 0, 'play' ) : '';
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user