: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* Generates the open graph url.
* @return string The open graph url.
public function generate_open_graph_url() {
if ( $this->model->canonical ) {
return $this->model->canonical;
* Generates the open graph article publisher.
* @return string The open graph article publisher.
public function generate_open_graph_article_publisher() {
* Generates the open graph article author.
* @return string The open graph article author.
public function generate_open_graph_article_author() {
* Generates the open graph article published time.
* @return string The open graph article published time.
public function generate_open_graph_article_published_time() {
* Generates the open graph article modified time.
* @return string The open graph article modified time.
public function generate_open_graph_article_modified_time() {
* Generates the open graph locale.
* @return string The open graph locale.
public function generate_open_graph_locale() {
return $this->open_graph_locale_generator->generate( $this->context );
* Generates the open graph site name.
* @return string The open graph site name.
public function generate_open_graph_site_name() {
return $this->context->wordpress_site_name;
* Generates the Twitter card type.
* @return string The Twitter card type.
public function generate_twitter_card() {
return $this->context->twitter_card;
* Generates the Twitter title.
* @return string The Twitter title.
public function generate_twitter_title() {
if ( $this->model->twitter_title ) {
return $this->model->twitter_title;
if ( $this->context->open_graph_enabled === true ) {
$social_template_title = $this->values_helper->get_open_graph_title( '', $this->model->object_type, $this->model->object_sub_type );
$open_graph_title = $this->open_graph_title;
// If the helper returns a value and it's different from the OG value in the indexable,
// output it in a twitter: tag.
if ( ! empty( $social_template_title ) && $social_template_title !== $open_graph_title ) {
return $social_template_title;
// If the OG title is set, let og: tag take care of this.
if ( ! empty( $open_graph_title ) ) {
* Generates the Twitter description.
* @return string The Twitter description.
public function generate_twitter_description() {
if ( $this->model->twitter_description ) {
return $this->model->twitter_description;
if ( $this->context->open_graph_enabled === true ) {
$social_template_description = $this->values_helper->get_open_graph_description( '', $this->model->object_type, $this->model->object_sub_type );
$open_graph_description = $this->open_graph_description;
// If the helper returns a value and it's different from the OG value in the indexable,
// output it in a twitter: tag.
if ( ! empty( $social_template_description ) && $social_template_description !== $open_graph_description ) {
return $social_template_description;
// If the OG description is set, let og: tag take care of this.
if ( ! empty( $open_graph_description ) ) {
if ( $this->meta_description ) {
return $this->meta_description;
* Generates the Twitter image.
* @return string The Twitter image.
public function generate_twitter_image() {
$images = $this->twitter_image_generator->generate( $this->context );
$image = \reset( $images );
// Use a user-defined Twitter image, if present.
if ( $image && $this->context->indexable->twitter_image_source === 'set-by-user' ) {
// Let the Open Graph tags, if enabled, handle the rest of the fallback hierarchy.
if ( $this->context->open_graph_enabled === true && $this->open_graph_images ) {
// Set a Twitter tag with the featured image, or a prominent image from the content, if present.
* Generates the Twitter creator.
* @return string The Twitter creator.
public function generate_twitter_creator() {
* Generates the Twitter site.
* @return string The Twitter site.
public function generate_twitter_site() {
switch ( $this->context->site_represents ) {
$twitter = $this->user->get_the_author_meta( 'twitter', (int) $this->context->site_user_id );
if ( empty( $twitter ) ) {
$twitter = $this->options->get( 'twitter_site' );
$twitter = $this->options->get( 'twitter_site' );
* @return array The source.
public function generate_source() {
* Generates the schema for the page.
* @codeCoverageIgnore Wrapper method.
* @return array The Schema object.
public function generate_schema() {
return $this->schema_generator->generate( $this->context );
* Generates the breadcrumbs for the page.
* @codeCoverageIgnore Wrapper method.
* @return array The breadcrumbs.
public function generate_breadcrumbs() {
return $this->breadcrumbs_generator->generate( $this->context );
* Generates the estimated reading time.
* @codeCoverageIgnore Wrapper method.
* @return int|null The estimated reading time.
public function generate_estimated_reading_time_minutes() {
if ( $this->model->estimated_reading_time_minutes !== null ) {
return $this->model->estimated_reading_time_minutes;
if ( $this->context->post === null ) {
// 200 is the approximate estimated words per minute across languages.
$words = \str_word_count( \wp_strip_all_tags( $this->context->post->post_content ) );
return (int) \round( $words / $words_per_minute );
* Strips all nested dependencies from the debug info.
public function __debugInfo() {
'context' => $this->context,