Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wordpres.../inc/sitemaps
File: class-author-sitemap-provider.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* WPSEO plugin file.
[2] Fix | Delete
*
[3] Fix | Delete
* @package WPSEO\XML_Sitemaps
[4] Fix | Delete
*/
[5] Fix | Delete
[6] Fix | Delete
/**
[7] Fix | Delete
* Sitemap provider for author archives.
[8] Fix | Delete
*/
[9] Fix | Delete
class WPSEO_Author_Sitemap_Provider implements WPSEO_Sitemap_Provider {
[10] Fix | Delete
[11] Fix | Delete
/**
[12] Fix | Delete
* Check if provider supports given item type.
[13] Fix | Delete
*
[14] Fix | Delete
* @param string $type Type string to check for.
[15] Fix | Delete
*
[16] Fix | Delete
* @return bool
[17] Fix | Delete
*/
[18] Fix | Delete
public function handles_type( $type ) {
[19] Fix | Delete
// If the author archives have been disabled, we don't do anything.
[20] Fix | Delete
if ( WPSEO_Options::get( 'disable-author', false ) || WPSEO_Options::get( 'noindex-author-wpseo', false ) ) {
[21] Fix | Delete
return false;
[22] Fix | Delete
}
[23] Fix | Delete
[24] Fix | Delete
return $type === 'author';
[25] Fix | Delete
}
[26] Fix | Delete
[27] Fix | Delete
/**
[28] Fix | Delete
* Get the links for the sitemap index.
[29] Fix | Delete
*
[30] Fix | Delete
* @param int $max_entries Entries per sitemap.
[31] Fix | Delete
*
[32] Fix | Delete
* @return array
[33] Fix | Delete
*/
[34] Fix | Delete
public function get_index_links( $max_entries ) {
[35] Fix | Delete
[36] Fix | Delete
if ( ! $this->handles_type( 'author' ) ) {
[37] Fix | Delete
return [];
[38] Fix | Delete
}
[39] Fix | Delete
[40] Fix | Delete
// @todo Consider doing this less often / when necessary. R.
[41] Fix | Delete
$this->update_user_meta();
[42] Fix | Delete
[43] Fix | Delete
$has_exclude_filter = has_filter( 'wpseo_sitemap_exclude_author' );
[44] Fix | Delete
[45] Fix | Delete
$query_arguments = [];
[46] Fix | Delete
[47] Fix | Delete
if ( ! $has_exclude_filter ) { // We only need full users if legacy filter(s) hooked to exclusion logic. R.
[48] Fix | Delete
$query_arguments['fields'] = 'ID';
[49] Fix | Delete
}
[50] Fix | Delete
[51] Fix | Delete
$users = $this->get_users( $query_arguments );
[52] Fix | Delete
[53] Fix | Delete
if ( $has_exclude_filter ) {
[54] Fix | Delete
$users = $this->exclude_users( $users );
[55] Fix | Delete
$users = wp_list_pluck( $users, 'ID' );
[56] Fix | Delete
}
[57] Fix | Delete
[58] Fix | Delete
if ( empty( $users ) ) {
[59] Fix | Delete
return [];
[60] Fix | Delete
}
[61] Fix | Delete
[62] Fix | Delete
$index = [];
[63] Fix | Delete
$user_pages = array_chunk( $users, $max_entries );
[64] Fix | Delete
[65] Fix | Delete
foreach ( $user_pages as $page_counter => $users_page ) {
[66] Fix | Delete
[67] Fix | Delete
$current_page = ( $page_counter === 0 ) ? '' : ( $page_counter + 1 );
[68] Fix | Delete
[69] Fix | Delete
$user_id = array_shift( $users_page ); // Time descending, first user on page is most recently updated.
[70] Fix | Delete
$user = get_user_by( 'id', $user_id );
[71] Fix | Delete
$index[] = [
[72] Fix | Delete
'loc' => WPSEO_Sitemaps_Router::get_base_url( 'author-sitemap' . $current_page . '.xml' ),
[73] Fix | Delete
'lastmod' => ( $user->_yoast_wpseo_profile_updated ) ? YoastSEO()->helpers->date->format_timestamp( $user->_yoast_wpseo_profile_updated ) : null,
[74] Fix | Delete
];
[75] Fix | Delete
}
[76] Fix | Delete
[77] Fix | Delete
return $index;
[78] Fix | Delete
}
[79] Fix | Delete
[80] Fix | Delete
/**
[81] Fix | Delete
* Retrieve users, taking account of all necessary exclusions.
[82] Fix | Delete
*
[83] Fix | Delete
* @param array $arguments Arguments to add.
[84] Fix | Delete
*
[85] Fix | Delete
* @return array
[86] Fix | Delete
*/
[87] Fix | Delete
protected function get_users( $arguments = [] ) {
[88] Fix | Delete
[89] Fix | Delete
global $wpdb;
[90] Fix | Delete
[91] Fix | Delete
$defaults = [
[92] Fix | Delete
'capability' => [ 'edit_posts' ],
[93] Fix | Delete
'meta_key' => '_yoast_wpseo_profile_updated',
[94] Fix | Delete
'orderby' => 'meta_value_num',
[95] Fix | Delete
'order' => 'DESC',
[96] Fix | Delete
'meta_query' => [
[97] Fix | Delete
'relation' => 'AND',
[98] Fix | Delete
[
[99] Fix | Delete
'key' => $wpdb->get_blog_prefix() . 'user_level',
[100] Fix | Delete
'value' => '0',
[101] Fix | Delete
'compare' => '!=',
[102] Fix | Delete
],
[103] Fix | Delete
[
[104] Fix | Delete
'relation' => 'OR',
[105] Fix | Delete
[
[106] Fix | Delete
'key' => 'wpseo_noindex_author',
[107] Fix | Delete
'value' => 'on',
[108] Fix | Delete
'compare' => '!=',
[109] Fix | Delete
],
[110] Fix | Delete
[
[111] Fix | Delete
'key' => 'wpseo_noindex_author',
[112] Fix | Delete
'compare' => 'NOT EXISTS',
[113] Fix | Delete
],
[114] Fix | Delete
],
[115] Fix | Delete
],
[116] Fix | Delete
];
[117] Fix | Delete
[118] Fix | Delete
if ( WPSEO_Options::get( 'noindex-author-noposts-wpseo', true ) ) {
[119] Fix | Delete
unset( $defaults['capability'] ); // Otherwise it cancels out next argument.
[120] Fix | Delete
$defaults['has_published_posts'] = YoastSEO()->helpers->author_archive->get_author_archive_post_types();
[121] Fix | Delete
}
[122] Fix | Delete
[123] Fix | Delete
return get_users( array_merge( $defaults, $arguments ) );
[124] Fix | Delete
}
[125] Fix | Delete
[126] Fix | Delete
/**
[127] Fix | Delete
* Get set of sitemap link data.
[128] Fix | Delete
*
[129] Fix | Delete
* @param string $type Sitemap type.
[130] Fix | Delete
* @param int $max_entries Entries per sitemap.
[131] Fix | Delete
* @param int $current_page Current page of the sitemap.
[132] Fix | Delete
*
[133] Fix | Delete
* @return array
[134] Fix | Delete
*
[135] Fix | Delete
* @throws OutOfBoundsException When an invalid page is requested.
[136] Fix | Delete
*/
[137] Fix | Delete
public function get_sitemap_links( $type, $max_entries, $current_page ) {
[138] Fix | Delete
[139] Fix | Delete
$links = [];
[140] Fix | Delete
[141] Fix | Delete
if ( ! $this->handles_type( 'author' ) ) {
[142] Fix | Delete
return $links;
[143] Fix | Delete
}
[144] Fix | Delete
[145] Fix | Delete
$user_criteria = [
[146] Fix | Delete
'offset' => ( ( $current_page - 1 ) * $max_entries ),
[147] Fix | Delete
'number' => $max_entries,
[148] Fix | Delete
];
[149] Fix | Delete
[150] Fix | Delete
$users = $this->get_users( $user_criteria );
[151] Fix | Delete
[152] Fix | Delete
// Throw an exception when there are no users in the sitemap.
[153] Fix | Delete
if ( count( $users ) === 0 ) {
[154] Fix | Delete
throw new OutOfBoundsException( 'Invalid sitemap page requested' );
[155] Fix | Delete
}
[156] Fix | Delete
[157] Fix | Delete
$users = $this->exclude_users( $users );
[158] Fix | Delete
if ( empty( $users ) ) {
[159] Fix | Delete
$users = [];
[160] Fix | Delete
}
[161] Fix | Delete
[162] Fix | Delete
$time = time();
[163] Fix | Delete
[164] Fix | Delete
foreach ( $users as $user ) {
[165] Fix | Delete
[166] Fix | Delete
$author_link = get_author_posts_url( $user->ID );
[167] Fix | Delete
[168] Fix | Delete
if ( empty( $author_link ) ) {
[169] Fix | Delete
continue;
[170] Fix | Delete
}
[171] Fix | Delete
[172] Fix | Delete
$mod = $time;
[173] Fix | Delete
[174] Fix | Delete
if ( isset( $user->_yoast_wpseo_profile_updated ) ) {
[175] Fix | Delete
$mod = $user->_yoast_wpseo_profile_updated;
[176] Fix | Delete
}
[177] Fix | Delete
[178] Fix | Delete
$url = [
[179] Fix | Delete
'loc' => $author_link,
[180] Fix | Delete
'mod' => date( DATE_W3C, $mod ),
[181] Fix | Delete
[182] Fix | Delete
// Deprecated, kept for backwards data compat. R.
[183] Fix | Delete
'chf' => 'daily',
[184] Fix | Delete
'pri' => 1,
[185] Fix | Delete
];
[186] Fix | Delete
[187] Fix | Delete
/** This filter is documented at inc/sitemaps/class-post-type-sitemap-provider.php */
[188] Fix | Delete
$url = apply_filters( 'wpseo_sitemap_entry', $url, 'user', $user );
[189] Fix | Delete
[190] Fix | Delete
if ( ! empty( $url ) ) {
[191] Fix | Delete
$links[] = $url;
[192] Fix | Delete
}
[193] Fix | Delete
}
[194] Fix | Delete
[195] Fix | Delete
return $links;
[196] Fix | Delete
}
[197] Fix | Delete
[198] Fix | Delete
/**
[199] Fix | Delete
* Update any users that don't have last profile update timestamp.
[200] Fix | Delete
*
[201] Fix | Delete
* @return int Count of users updated.
[202] Fix | Delete
*/
[203] Fix | Delete
protected function update_user_meta() {
[204] Fix | Delete
[205] Fix | Delete
$user_criteria = [
[206] Fix | Delete
'capability' => [ 'edit_posts' ],
[207] Fix | Delete
'meta_query' => [
[208] Fix | Delete
[
[209] Fix | Delete
'key' => '_yoast_wpseo_profile_updated',
[210] Fix | Delete
'compare' => 'NOT EXISTS',
[211] Fix | Delete
],
[212] Fix | Delete
],
[213] Fix | Delete
];
[214] Fix | Delete
[215] Fix | Delete
$users = get_users( $user_criteria );
[216] Fix | Delete
[217] Fix | Delete
$time = time();
[218] Fix | Delete
[219] Fix | Delete
foreach ( $users as $user ) {
[220] Fix | Delete
update_user_meta( $user->ID, '_yoast_wpseo_profile_updated', $time );
[221] Fix | Delete
}
[222] Fix | Delete
[223] Fix | Delete
return count( $users );
[224] Fix | Delete
}
[225] Fix | Delete
[226] Fix | Delete
/**
[227] Fix | Delete
* Wrap legacy filter to deduplicate calls.
[228] Fix | Delete
*
[229] Fix | Delete
* @param array $users Array of user objects to filter.
[230] Fix | Delete
*
[231] Fix | Delete
* @return array
[232] Fix | Delete
*/
[233] Fix | Delete
protected function exclude_users( $users ) {
[234] Fix | Delete
[235] Fix | Delete
/**
[236] Fix | Delete
* Filter the authors, included in XML sitemap.
[237] Fix | Delete
*
[238] Fix | Delete
* @param array $users Array of user objects to filter.
[239] Fix | Delete
*/
[240] Fix | Delete
return apply_filters( 'wpseo_sitemap_exclude_author', $users );
[241] Fix | Delete
}
[242] Fix | Delete
}
[243] Fix | Delete
[244] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function