123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771 |
- <?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 */
|