Files
SIGE-WEB-snapshot/wp-content/plugins/all-in-one-seo-pack/app/Common/Schema/Graphs/WebPage/ProfilePage.php

74 lines
1.5 KiB
PHP

<?php
namespace AIOSEO\Plugin\Common\Schema\Graphs\WebPage;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* ProfilePage graph class.
*
* @since 4.0.0
*/
class ProfilePage extends WebPage {
/**
* The graph type.
*
* @since 4.5.6
*
* @var string
*/
protected $type = 'ProfilePage';
/**
* Returns the graph data.
*
* @since 4.5.4
*
* @return array The graph data.
*/
public function get() {
$data = parent::get();
$post = aioseo()->helpers->getPost();
$author = get_queried_object();
if (
! is_a( $author, 'WP_User' ) &&
( is_singular() && ! is_a( $post, 'WP_Post' ) )
) {
return [];
}
global $wp_query;
$articles = [];
$authorId = $author->ID ?? $post->post_author ?? 0;
foreach ( $wp_query->posts as $post ) {
if ( $post->post_author !== $authorId ) {
continue;
}
$articles[] = [
'@type' => 'Article',
'url' => get_permalink( $post->ID ),
'headline' => $post->post_title,
'datePublished' => mysql2date( DATE_W3C, $post->post_date, false ),
'dateModified' => mysql2date( DATE_W3C, $post->post_modified, false ),
'author' => [
'@id' => get_author_posts_url( $authorId ) . '#author'
]
];
}
$data = array_merge( $data, [
'dateCreated' => mysql2date( DATE_W3C, $author->user_registered, false ),
'mainEntity' => [
'@id' => get_author_posts_url( $authorId ) . '#author'
],
'hasPart' => $articles
] );
return $data;
}
}