You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.7 KiB
PHP
72 lines
1.7 KiB
PHP
<?php
|
|
/**
|
|
* The Website Class.
|
|
*
|
|
* @since 1.0.13
|
|
* @package RankMath
|
|
* @subpackage RankMath\Schema
|
|
* @author Rank Math <support@rankmath.com>
|
|
*/
|
|
|
|
namespace RankMath\Schema;
|
|
|
|
use RankMath\Helper;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Website class.
|
|
*/
|
|
class Website implements Snippet {
|
|
|
|
/**
|
|
* Generate WebSite JSON-LD.
|
|
*
|
|
* @link https://schema.org/WebSite
|
|
*
|
|
* @param array $data Array of JSON-LD data.
|
|
* @param JsonLD $jsonld JsonLD Instance.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function process( $data, $jsonld ) {
|
|
$data['WebSite'] = [
|
|
'@type' => 'WebSite',
|
|
'@id' => home_url( '/#website' ),
|
|
'url' => get_home_url(),
|
|
'name' => $jsonld->get_website_name(),
|
|
];
|
|
|
|
$alternate_name = Helper::get_settings( 'titles.website_alternate_name' );
|
|
if ( $alternate_name ) {
|
|
$data['WebSite']['alternateName'] = $alternate_name;
|
|
}
|
|
$jsonld->add_prop( 'publisher', $data['WebSite'], 'publisher', $data );
|
|
$jsonld->add_prop( 'language', $data['WebSite'] );
|
|
|
|
/**
|
|
* Disable the JSON-LD output for the Sitelinks Searchbox.
|
|
*
|
|
* @param boolean Display or not the JSON-LD for the Sitelinks Searchbox.
|
|
*/
|
|
if ( apply_filters( 'rank_math/json_ld/disable_search', ! is_front_page() || is_paged() ) ) {
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* Change the search URL in the JSON-LD.
|
|
*
|
|
* @param string $search_url The search URL with `{search_term_string}` placeholder.
|
|
*/
|
|
$search_url = apply_filters( 'rank_math/json_ld/search_url', home_url( '/?s={search_term_string}' ) );
|
|
|
|
$data['WebSite']['potentialAction'] = [
|
|
'@type' => 'SearchAction',
|
|
'target' => $search_url,
|
|
'query-input' => 'required name=search_term_string',
|
|
];
|
|
|
|
return $data;
|
|
}
|
|
}
|