ProShell v2.0
Dashboard
Server Info
Server: 158.106.128.192
PHP: 8.2.33
home
planet5
public_html
bansibaba.com
wp-includes
2026-09-16 10:28:58
Editing: class-opengraph.php
Cancel
Save Changes
<?php /** * WPSEO plugin file. * * @package WPSEO\Frontend */ /** * This code adds the OpenGraph output. */ class WPSEO_OpenGraph { /** * The date helper. * * @var WPSEO_Date_Helper */ protected $date; /** * Class constructor. */ public function __construct() { $this->date = new WPSEO_Date_Helper(); if ( isset( $GLOBALS['fb_ver'] ) || class_exists( 'Facebook_Loader', false ) ) { add_filter( 'fb_meta_tags', [ $this, 'facebook_filter' ], 10, 1 ); } else { add_action( 'wpseo_opengraph', [ $this, 'locale' ], 1 ); add_action( 'wpseo_opengraph', [ $this, 'type' ], 5 ); add_action( 'wpseo_opengraph', [ $this, 'og_title' ], 10 ); add_action( 'wpseo_opengraph', [ $this, 'app_id' ], 20 ); add_action( 'wpseo_opengraph', [ $this, 'description' ], 11 ); add_action( 'wpseo_opengraph', [ $this, 'url' ], 12 ); add_action( 'wpseo_opengraph', [ $this, 'site_name' ], 13 ); add_action( 'wpseo_opengraph', [ $this, 'website_facebook' ], 14 ); if ( is_singular() && ! is_front_page() ) { add_action( 'wpseo_opengraph', [ $this, 'article_author_facebook' ], 15 ); add_action( 'wpseo_opengraph', [ $this, 'tags' ], 16 ); add_action( 'wpseo_opengraph', [ $this, 'category' ], 17 ); add_action( 'wpseo_opengraph', [ $this, 'publish_date' ], 19 ); } add_action( 'wpseo_opengraph', [ $this, 'image' ], 30 ); } add_filter( 'jetpack_enable_open_graph', '__return_false' ); add_action( 'wpseo_head', [ $this, 'opengraph' ], 30 ); } /** * Main OpenGraph output. */ public function opengraph() { wp_reset_query(); /** * Action: 'wpseo_opengraph' - Hook to add all Facebook OpenGraph output to so they're close together. */ do_action( 'wpseo_opengraph' ); } /** * Internal function to output FB tags. This also adds an output filter to each bit of output based on the property. * * @param string $property Property attribute value. * @param string $content Content attribute value. * * @return boolean */ public function og_tag( $property, $content ) { $og_property = str_replace( ':', '_', $property ); /** * Filter: 'wpseo_og_' . $og_property - Allow developers to change the content of specific OG meta tags. * * @api string $content The content of the property. */ $content = apply_filters( 'wpseo_og_' . $og_property, $content ); if ( empty( $content ) ) { return false; } echo '<meta property="', esc_attr( $property ), '" content="', esc_attr( $content ), '" />', "\n"; return true; } /** * Filter the Facebook plugins metadata. * * @param array $meta_tags The array to fix. * * @return array $meta_tags */ public function facebook_filter( $meta_tags ) { $meta_tags['http://ogp.me/ns#type'] = $this->type( false ); $meta_tags['http://ogp.me/ns#title'] = $this->og_title( false ); // Filter the locale too because the Facebook plugin locale code is not as good as ours. $meta_tags['http://ogp.me/ns#locale'] = $this->locale( false ); $ogdesc = $this->description( false ); if ( ! empty( $ogdesc ) ) { $meta_tags['http://ogp.me/ns#description'] = $ogdesc; } return $meta_tags; } /** * Outputs the authors FB page. * * @link https://developers.facebook.com/blog/post/2013/06/19/platform-updates--new-open-graph-tags-for-media-publishers-and-more/ * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @return boolean */ public function article_author_facebook() { if ( ! is_singular() ) { return false; } /** * Filter: 'wpseo_opengraph_author_facebook' - Allow developers to filter the Yoast SEO post authors facebook profile URL. * * @api bool|string $unsigned The Facebook author URL, return false to disable. */ $facebook = apply_filters( 'wpseo_opengraph_author_facebook', get_the_author_meta( 'facebook', $GLOBALS['post']->post_author ) ); if ( $facebook && ( is_string( $facebook ) && $facebook !== '' ) ) { $this->og_tag( 'article:author', $facebook ); return true; } return false; } /** * Outputs the websites FB page. * * @link https://developers.facebook.com/blog/post/2013/06/19/platform-updates--new-open-graph-tags-for-media-publishers-and-more/ * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @return boolean */ public function website_facebook() { if ( 'article' === $this->type( false ) && WPSEO_Options::get( 'facebook_site', '' ) !== '' ) { $this->og_tag( 'article:publisher', WPSEO_Options::get( 'facebook_site' ) ); return true; } return false; } /** * Outputs the SEO title as OpenGraph title. * * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @param bool $echo Whether or not to echo the output. * * @return string|boolean */ public function og_title( $echo = true ) { $frontend = WPSEO_Frontend::get_instance(); if ( WPSEO_Frontend_Page_Type::is_simple_page() ) { $post_id = WPSEO_Frontend_Page_Type::get_simple_page_id(); $post = get_post( $post_id ); $title = WPSEO_Meta::get_value( 'opengraph-title', $post_id ); if ( $title === '' ) { $title = $frontend->title( '' ); } else { // Replace Yoast SEO Variables. $title = wpseo_replace_vars( $title, $post ); } } elseif ( is_front_page() ) { $title = ( WPSEO_Options::get( 'og_frontpage_title', '' ) !== '' ) ? WPSEO_Options::get( 'og_frontpage_title' ) : $frontend->title( '' ); } elseif ( is_category() || is_tax() || is_tag() ) { $title = WPSEO_Taxonomy_Meta::get_meta_without_term( 'opengraph-title' ); if ( $title === '' ) { $title = $frontend->title( '' ); } else { // Replace Yoast SEO Variables. $title = wpseo_replace_vars( $title, $GLOBALS['wp_query']->get_queried_object() ); } } else { $title = $frontend->title( '' ); } /** * Filter: 'wpseo_opengraph_title' - Allow changing the title specifically for OpenGraph. * * @api string $unsigned The title string. */ $title = trim( apply_filters( 'wpseo_opengraph_title', $title ) ); if ( is_string( $title ) && $title !== '' ) { if ( $echo !== false ) { $this->og_tag( 'og:title', $title ); return true; } } if ( $echo === false ) { return $title; } return false; } /** * Outputs the canonical URL as OpenGraph URL, which consolidates likes and shares. * * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @return boolean */ public function url() { $url = WPSEO_Frontend::get_instance()->canonical( false, false ); $unpaged_url = WPSEO_Frontend::get_instance()->canonical( false, true ); /* * If the unpaged URL is the same as the normal URL but just with pagination added, use that. * This makes sure we always use the unpaged URL when we can, but doesn't break for overridden canonicals. */ if ( ! empty( $unpaged_url ) && is_string( $unpaged_url ) && strpos( $url, $unpaged_url ) === 0 ) { $url = $unpaged_url; } /** * Filter: 'wpseo_opengraph_url' - Allow changing the OpenGraph URL. * * @api string $unsigned Canonical URL. */ $url = apply_filters( 'wpseo_opengraph_url', $url ); if ( is_string( $url ) && $url !== '' ) { $this->og_tag( 'og:url', esc_url( $url ) ); return true; } return false; } /** * Output the locale, doing some conversions to make sure the proper Facebook locale is outputted. * * Last update/compare with FB list done on 2015-03-16 by Rarst. * * @link http://www.facebook.com/translations/FacebookLocales.xml for the list of supported locales. * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @param bool $echo Whether to echo or return the locale. * * @return string $locale */ public function locale( $echo = true ) { /** * Filter: 'wpseo_locale' - Allow changing the locale output. * * @api string $unsigned Locale string. */ $locale = apply_filters( 'wpseo_locale', get_locale() ); // Catch some weird locales served out by WP that are not easily doubled up. $fix_locales = [ 'ca' => 'ca_ES', 'en' => 'en_US', 'el' => 'el_GR', 'et' => 'et_EE', 'ja' => 'ja_JP', 'sq' => 'sq_AL', 'uk' => 'uk_UA', 'vi' => 'vi_VN', 'zh' => 'zh_CN', ]; if ( isset( $fix_locales[ $locale ] ) ) { $locale = $fix_locales[ $locale ]; } // Convert locales like "es" to "es_ES", in case that works for the given locale (sometimes it does). if ( strlen( $locale ) === 2 ) { $locale = strtolower( $locale ) . '_' . strtoupper( $locale ); } // These are the locales FB supports. $fb_valid_fb_locales = [ 'af_ZA', // Afrikaans. 'ak_GH', // Akan. 'am_ET', // Amharic. 'ar_AR', // Arabic. 'as_IN', // Assamese. 'ay_BO', // Aymara. 'az_AZ', // Azerbaijani. 'be_BY', // Belarusian. 'bg_BG', // Bulgarian. 'bp_IN', // Bhojpuri. 'bn_IN', // Bengali. 'br_FR', // Breton. 'bs_BA', // Bosnian. 'ca_ES', // Catalan. 'cb_IQ', // Sorani Kurdish. 'ck_US', // Cherokee. 'co_FR', // Corsican. 'cs_CZ', // Czech. 'cx_PH', // Cebuano. 'cy_GB', // Welsh. 'da_DK', // Danish. 'de_DE', // German. 'el_GR', // Greek. 'en_GB', // English (UK). 'en_PI', // English (Pirate). 'en_UD', // English (Upside Down). 'en_US', // English (US). 'em_ZM', 'eo_EO', // Esperanto. 'es_ES', // Spanish (Spain). 'es_LA', // Spanish. 'es_MX', // Spanish (Mexico). 'et_EE', // Estonian. 'eu_ES', // Basque. 'fa_IR', // Persian. 'fb_LT', // Leet Speak. 'ff_NG', // Fulah. 'fi_FI', // Finnish. 'fo_FO', // Faroese. 'fr_CA', // French (Canada). 'fr_FR', // French (France). 'fy_NL', // Frisian. 'ga_IE', // Irish. 'gl_ES', // Galician. 'gn_PY', // Guarani. 'gu_IN', // Gujarati. 'gx_GR', // Classical Greek. 'ha_NG', // Hausa. 'he_IL', // Hebrew. 'hi_IN', // Hindi. 'hr_HR', // Croatian. 'hu_HU', // Hungarian. 'ht_HT', // Haitian Creole. 'hy_AM', // Armenian. 'id_ID', // Indonesian. 'ig_NG', // Igbo. 'is_IS', // Icelandic. 'it_IT', // Italian. 'ik_US', 'iu_CA', 'ja_JP', // Japanese. 'ja_KS', // Japanese (Kansai). 'jv_ID', // Javanese. 'ka_GE', // Georgian. 'kk_KZ', // Kazakh. 'km_KH', // Khmer. 'kn_IN', // Kannada. 'ko_KR', // Korean. 'ks_IN', // Kashmiri. 'ku_TR', // Kurdish (Kurmanji). 'ky_KG', // Kyrgyz. 'la_VA', // Latin. 'lg_UG', // Ganda. 'li_NL', // Limburgish. 'ln_CD', // Lingala. 'lo_LA', // Lao. 'lt_LT', // Lithuanian. 'lv_LV', // Latvian. 'mg_MG', // Malagasy. 'mi_NZ', // Maori. 'mk_MK', // Macedonian. 'ml_IN', // Malayalam. 'mn_MN', // Mongolian. 'mr_IN', // Marathi. 'ms_MY', // Malay. 'mt_MT', // Maltese. 'my_MM', // Burmese. 'nb_NO', // Norwegian (bokmal). 'nd_ZW', // Ndebele. 'ne_NP', // Nepali. 'nl_BE', // Dutch (Belgie). 'nl_NL', // Dutch. 'nn_NO', // Norwegian (nynorsk). 'nr_ZA', // Southern Ndebele. 'ns_ZA', // Northern Sotho. 'ny_MW', // Chewa. 'om_ET', // Oromo. 'or_IN', // Oriya. 'pa_IN', // Punjabi. 'pl_PL', // Polish. 'ps_AF', // Pashto. 'pt_BR', // Portuguese (Brazil). 'pt_PT', // Portuguese (Portugal). 'qc_GT', // Quiché. 'qu_PE', // Quechua. 'qr_GR', 'qz_MM', // Burmese (Zawgyi). 'rm_CH', // Romansh. 'ro_RO', // Romanian. 'ru_RU', // Russian. 'rw_RW', // Kinyarwanda. 'sa_IN', // Sanskrit. 'sc_IT', // Sardinian. 'se_NO', // Northern Sami. 'si_LK', // Sinhala. 'su_ID', // Sundanese. 'sk_SK', // Slovak. 'sl_SI', // Slovenian. 'sn_ZW', // Shona. 'so_SO', // Somali. 'sq_AL', // Albanian. 'sr_RS', // Serbian. 'ss_SZ', // Swazi. 'st_ZA', // Southern Sotho. 'sv_SE', // Swedish. 'sw_KE', // Swahili. 'sy_SY', // Syriac. 'sz_PL', // Silesian. 'ta_IN', // Tamil. 'te_IN', // Telugu. 'tg_TJ', // Tajik. 'th_TH', // Thai. 'tk_TM', // Turkmen. 'tl_PH', // Filipino. 'tl_ST', // Klingon. 'tn_BW', // Tswana. 'tr_TR', // Turkish. 'ts_ZA', // Tsonga. 'tt_RU', // Tatar. 'tz_MA', // Tamazight. 'uk_UA', // Ukrainian. 'ur_PK', // Urdu. 'uz_UZ', // Uzbek. 've_ZA', // Venda. 'vi_VN', // Vietnamese. 'wo_SN', // Wolof. 'xh_ZA', // Xhosa. 'yi_DE', // Yiddish. 'yo_NG', // Yoruba. 'zh_CN', // Simplified Chinese (China). 'zh_HK', // Traditional Chinese (Hong Kong). 'zh_TW', // Traditional Chinese (Taiwan). 'zu_ZA', // Zulu. 'zz_TR', // Zazaki. ]; // Check to see if the locale is a valid FB one, if not, use en_US as a fallback. if ( ! in_array( $locale, $fb_valid_fb_locales, true ) ) { $locale = strtolower( substr( $locale, 0, 2 ) ) . '_' . strtoupper( substr( $locale, 0, 2 ) ); if ( ! in_array( $locale, $fb_valid_fb_locales, true ) ) { $locale = 'en_US'; } } if ( $echo !== false ) { $this->og_tag( 'og:locale', $locale ); } return $locale; } /** * Output the OpenGraph type. * * @param boolean $echo Whether to echo or return the type. * * @link https://developers.facebook.com/docs/reference/opengraph/object-type/object/ * * @return string $type */ public function type( $echo = true ) { if ( is_front_page() || is_home() ) { $type = 'website'; } elseif ( is_singular() ) { // This'll usually only be changed by plugins right now. $type = WPSEO_Meta::get_value( 'og_type' ); if ( $type === '' ) { $type = 'article'; } } else { // We use "object" for archives etc. as article doesn't apply there. $type = 'object'; } /** * Filter: 'wpseo_opengraph_type' - Allow changing the OpenGraph type of the page. * * @api string $type The OpenGraph type string. */ $type = apply_filters( 'wpseo_opengraph_type', $type ); if ( is_string( $type ) && $type !== '' ) { if ( $echo !== false ) { $this->og_tag( 'og:type', $type ); } else { return $type; } } return ''; } /** * Create new WPSEO_OpenGraph_Image class and get the images to set the og:image. * * @param string|bool $image Optional. Image URL. * * @return void */ public function image( $image = false ) { $opengraph_image = new WPSEO_OpenGraph_Image( $image, $this ); $opengraph_image->show(); } /** * Output the OpenGraph description, specific OG description first, if not, grab the meta description. * * @param bool $echo Whether to echo or return the description. * * @return string $ogdesc */ public function description( $echo = true ) { $ogdesc = ''; $frontend = WPSEO_Frontend::get_instance(); if ( is_front_page() ) { if ( WPSEO_Options::get( 'og_frontpage_desc', '' ) !== '' ) { $ogdesc = wpseo_replace_vars( WPSEO_Options::get( 'og_frontpage_desc' ), null ); } else { $ogdesc = $frontend->metadesc( false ); } } if ( WPSEO_Frontend_Page_Type::is_simple_page() ) { $post_id = WPSEO_Frontend_Page_Type::get_simple_page_id(); $post = get_post( $post_id ); $ogdesc = WPSEO_Meta::get_value( 'opengraph-description', $post_id ); // Replace Yoast SEO Variables. $ogdesc = wpseo_replace_vars( $ogdesc, $post ); // Use metadesc if $ogdesc is empty. if ( $ogdesc === '' ) { $ogdesc = $frontend->metadesc( false ); } // Tag og:description is still blank so grab it from get_the_excerpt(). if ( ! is_string( $ogdesc ) || ( is_string( $ogdesc ) && $ogdesc === '' ) ) { $ogdesc = str_replace( '[…]', '…', wp_strip_all_tags( get_the_excerpt() ) ); } } if ( is_author() ) { $ogdesc = $frontend->metadesc( false ); } if ( is_category() || is_tag() || is_tax() ) { $ogdesc = WPSEO_Taxonomy_Meta::get_meta_without_term( 'opengraph-description' ); if ( $ogdesc === '' ) { $ogdesc = $frontend->metadesc( false ); } if ( $ogdesc === '' ) { $ogdesc = wp_strip_all_tags( term_description() ); } if ( $ogdesc === '' ) { $ogdesc = WPSEO_Taxonomy_Meta::get_meta_without_term( 'desc' ); } $ogdesc = wpseo_replace_vars( $ogdesc, get_queried_object() ); } // Strip shortcodes if any. $ogdesc = strip_shortcodes( $ogdesc ); /** * Filter: 'wpseo_opengraph_desc' - Allow changing the OpenGraph description. * * @api string $ogdesc The description string. */ $ogdesc = trim( apply_filters( 'wpseo_opengraph_desc', $ogdesc ) ); if ( is_string( $ogdesc ) && $ogdesc !== '' ) { if ( $echo !== false ) { $this->og_tag( 'og:description', $ogdesc ); } } return $ogdesc; } /** * Output the site name straight from the blog info. */ public function site_name() { /** * Filter: 'wpseo_opengraph_site_name' - Allow changing the OpenGraph site name. * * @api string $unsigned Blog name string. */ $name = apply_filters( 'wpseo_opengraph_site_name', get_bloginfo( 'name' ) ); if ( is_string( $name ) && $name !== '' ) { $this->og_tag( 'og:site_name', $name ); } } /** * Output the article tags as article:tag tags. * * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @return boolean */ public function tags() { if ( ! is_singular() ) { return false; } $tags = get_the_tags(); if ( ! is_wp_error( $tags ) && ( is_array( $tags ) && $tags !== [] ) ) { foreach ( $tags as $tag ) { $this->og_tag( 'article:tag', $tag->name ); } return true; } return false; } /** * Output the article category as an article:section tag. * * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @return boolean; */ public function category() { if ( ! is_singular() ) { return false; } $post = get_post(); if ( ! $post ) { return false; } $primary_term = new WPSEO_Primary_Term( 'category', $post->ID ); $primary_category = $primary_term->get_primary_term(); if ( $primary_category ) { // We can only show one section here, so we take the first one. $this->og_tag( 'article:section', get_cat_name( $primary_category ) ); return true; } $terms = get_the_category(); if ( ! is_wp_error( $terms ) && is_array( $terms ) && ! empty( $terms ) ) { // We can only show one section here, so we take the first one. $term = reset( $terms ); $this->og_tag( 'article:section', $term->name ); return true; } return false; } /** * Output the article publish and last modification date. * * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @return boolean; */ public function publish_date() { if ( ! is_singular( 'post' ) ) { /** * Filter: 'wpseo_opengraph_show_publish_date' - Allow showing publication date for other post types. * * @api bool $unsigned Whether or not to show publish date. * * @param string $post_type The current URL's post type. */ if ( false === apply_filters( 'wpseo_opengraph_show_publish_date', false, get_post_type() ) ) { return false; } } $post = get_post(); $pub = $this->date->format( $post->post_date_gmt ); $this->og_tag( 'article:published_time', $pub ); $mod = $this->date->format( $post->post_modified_gmt ); if ( $mod !== $pub ) { $this->og_tag( 'article:modified_time', $mod ); $this->og_tag( 'og:updated_time', $mod ); } return true; } /** * Outputs the Facebook app_id. * * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @return void */ public function app_id() { $app_id = WPSEO_Options::get( 'fbadminapp', '' ); if ( $app_id !== '' ) { $this->og_tag( 'fb:app_id', $app_id ); } } /* ********************* DEPRECATED METHODS ********************* */ /** * Outputs the site owner. * * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/ * * @return void * * @deprecated 7.1 * @codeCoverageIgnore */ public function site_owner() { // As this is a frontend method, we want to make sure it is not displayed for non-logged in users. if ( function_exists( 'wp_get_current_user' ) && current_user_can( 'manage_options' ) ) { _deprecated_function( 'WPSEO_OpenGraph::site_owner', '7.1', null ); } } /** * Fallback method for plugins using image_output. * * @param string|bool $image Image URL. * * @deprecated 7.4 * @codeCoverageIgnore */ public function image_output( $image = false ) { _deprecated_function( 'WPSEO_OpenGraph::image_output', '7.4', 'WPSEO_OpenGraph::image' ); $this->image( $image ); } } /* End of class */
Upload Files
Cancel
Upload
Create New
Cancel
Create
Change Permissions
Cancel
Save
Change Date
Cancel
Save
Rename Item
Cancel
Save
Confirm Delete
Are you sure you want to delete the selected items?
Cancel
Delete