Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/jetpack/modules/sitemaps
File: sitemap-builder.php
private function build_master_sitemap( $max ) {
[500] Fix | Delete
$page = array();
[501] Fix | Delete
$image = array();
[502] Fix | Delete
$video = array();
[503] Fix | Delete
if ( $this->logger ) {
[504] Fix | Delete
$this->logger->report( '-- Building Master Sitemap.' );
[505] Fix | Delete
}
[506] Fix | Delete
[507] Fix | Delete
$buffer = Jetpack_Sitemap_Buffer_Factory::create(
[508] Fix | Delete
'master',
[509] Fix | Delete
JP_SITEMAP_MAX_ITEMS,
[510] Fix | Delete
JP_SITEMAP_MAX_BYTES
[511] Fix | Delete
);
[512] Fix | Delete
[513] Fix | Delete
if ( ! $buffer ) {
[514] Fix | Delete
return;
[515] Fix | Delete
}
[516] Fix | Delete
[517] Fix | Delete
if ( isset( $max[ JP_PAGE_SITEMAP_TYPE ] ) && 0 < $max[ JP_PAGE_SITEMAP_TYPE ]['number'] ) {
[518] Fix | Delete
if ( 1 === $max[ JP_PAGE_SITEMAP_TYPE ]['number'] ) {
[519] Fix | Delete
$page['filename'] = jp_sitemap_filename( JP_PAGE_SITEMAP_TYPE, 1 );
[520] Fix | Delete
$page['last_modified'] = jp_sitemap_datetime( $max[ JP_PAGE_SITEMAP_TYPE ]['lastmod'] );
[521] Fix | Delete
} else {
[522] Fix | Delete
$page['filename'] = jp_sitemap_filename(
[523] Fix | Delete
JP_PAGE_SITEMAP_INDEX_TYPE,
[524] Fix | Delete
$max[ JP_PAGE_SITEMAP_INDEX_TYPE ]['number']
[525] Fix | Delete
);
[526] Fix | Delete
$page['last_modified'] = jp_sitemap_datetime( $max[ JP_PAGE_SITEMAP_INDEX_TYPE ]['lastmod'] );
[527] Fix | Delete
}
[528] Fix | Delete
[529] Fix | Delete
$buffer->append(
[530] Fix | Delete
array(
[531] Fix | Delete
'sitemap' => array(
[532] Fix | Delete
'loc' => $this->finder->construct_sitemap_url( $page['filename'] ),
[533] Fix | Delete
'lastmod' => $page['last_modified'],
[534] Fix | Delete
),
[535] Fix | Delete
)
[536] Fix | Delete
);
[537] Fix | Delete
}
[538] Fix | Delete
[539] Fix | Delete
if ( isset( $max[ JP_IMAGE_SITEMAP_TYPE ] ) && 0 < $max[ JP_IMAGE_SITEMAP_TYPE ]['number'] ) {
[540] Fix | Delete
if ( 1 === $max[ JP_IMAGE_SITEMAP_TYPE ]['number'] ) {
[541] Fix | Delete
$image['filename'] = jp_sitemap_filename( JP_IMAGE_SITEMAP_TYPE, 1 );
[542] Fix | Delete
$image['last_modified'] = jp_sitemap_datetime( $max[ JP_IMAGE_SITEMAP_TYPE ]['lastmod'] );
[543] Fix | Delete
} else {
[544] Fix | Delete
$image['filename'] = jp_sitemap_filename(
[545] Fix | Delete
JP_IMAGE_SITEMAP_INDEX_TYPE,
[546] Fix | Delete
$max[ JP_IMAGE_SITEMAP_INDEX_TYPE ]['number']
[547] Fix | Delete
);
[548] Fix | Delete
$image['last_modified'] = jp_sitemap_datetime( $max[ JP_IMAGE_SITEMAP_INDEX_TYPE ]['lastmod'] );
[549] Fix | Delete
}
[550] Fix | Delete
[551] Fix | Delete
$buffer->append(
[552] Fix | Delete
array(
[553] Fix | Delete
'sitemap' => array(
[554] Fix | Delete
'loc' => $this->finder->construct_sitemap_url( $image['filename'] ),
[555] Fix | Delete
'lastmod' => $image['last_modified'],
[556] Fix | Delete
),
[557] Fix | Delete
)
[558] Fix | Delete
);
[559] Fix | Delete
}
[560] Fix | Delete
[561] Fix | Delete
if ( isset( $max[ JP_VIDEO_SITEMAP_TYPE ] ) && 0 < $max[ JP_VIDEO_SITEMAP_TYPE ]['number'] ) {
[562] Fix | Delete
if ( 1 === $max[ JP_VIDEO_SITEMAP_TYPE ]['number'] ) {
[563] Fix | Delete
$video['filename'] = jp_sitemap_filename( JP_VIDEO_SITEMAP_TYPE, 1 );
[564] Fix | Delete
$video['last_modified'] = jp_sitemap_datetime( $max[ JP_VIDEO_SITEMAP_TYPE ]['lastmod'] );
[565] Fix | Delete
} else {
[566] Fix | Delete
$video['filename'] = jp_sitemap_filename(
[567] Fix | Delete
JP_VIDEO_SITEMAP_INDEX_TYPE,
[568] Fix | Delete
$max[ JP_VIDEO_SITEMAP_INDEX_TYPE ]['number']
[569] Fix | Delete
);
[570] Fix | Delete
$video['last_modified'] = jp_sitemap_datetime( $max[ JP_VIDEO_SITEMAP_INDEX_TYPE ]['lastmod'] );
[571] Fix | Delete
}
[572] Fix | Delete
[573] Fix | Delete
$buffer->append(
[574] Fix | Delete
array(
[575] Fix | Delete
'sitemap' => array(
[576] Fix | Delete
'loc' => $this->finder->construct_sitemap_url( $video['filename'] ),
[577] Fix | Delete
'lastmod' => $video['last_modified'],
[578] Fix | Delete
),
[579] Fix | Delete
)
[580] Fix | Delete
);
[581] Fix | Delete
}
[582] Fix | Delete
[583] Fix | Delete
$this->librarian->store_sitemap_data(
[584] Fix | Delete
0,
[585] Fix | Delete
JP_MASTER_SITEMAP_TYPE,
[586] Fix | Delete
$buffer->contents(),
[587] Fix | Delete
''
[588] Fix | Delete
);
[589] Fix | Delete
}
[590] Fix | Delete
[591] Fix | Delete
/**
[592] Fix | Delete
* Build and store a single page sitemap. Returns false if no sitemap is built.
[593] Fix | Delete
*
[594] Fix | Delete
* Side effect: Create/update a sitemap row.
[595] Fix | Delete
*
[596] Fix | Delete
* @access private
[597] Fix | Delete
* @since 4.8.0
[598] Fix | Delete
*
[599] Fix | Delete
* @param int $number The number of the current sitemap.
[600] Fix | Delete
* @param int $from_id The greatest lower bound of the IDs of the posts to be included.
[601] Fix | Delete
*
[602] Fix | Delete
* @return bool|array @args {
[603] Fix | Delete
* @type int $last_id The ID of the last item to be successfully added to the buffer.
[604] Fix | Delete
* @type bool $any_left 'true' if there are items which haven't been saved to a sitemap, 'false' otherwise.
[605] Fix | Delete
* @type string $last_modified The most recent timestamp to appear on the sitemap.
[606] Fix | Delete
* }
[607] Fix | Delete
*/
[608] Fix | Delete
public function build_one_page_sitemap( $number, $from_id ) {
[609] Fix | Delete
$last_post_id = $from_id;
[610] Fix | Delete
$any_posts_left = true;
[611] Fix | Delete
[612] Fix | Delete
if ( $this->logger ) {
[613] Fix | Delete
$debug_name = jp_sitemap_filename( JP_PAGE_SITEMAP_TYPE, $number );
[614] Fix | Delete
$this->logger->report( "-- Building $debug_name" );
[615] Fix | Delete
}
[616] Fix | Delete
[617] Fix | Delete
$buffer = Jetpack_Sitemap_Buffer_Factory::create(
[618] Fix | Delete
'page',
[619] Fix | Delete
JP_SITEMAP_MAX_ITEMS,
[620] Fix | Delete
JP_SITEMAP_MAX_BYTES
[621] Fix | Delete
);
[622] Fix | Delete
[623] Fix | Delete
if ( ! $buffer ) {
[624] Fix | Delete
return false;
[625] Fix | Delete
}
[626] Fix | Delete
[627] Fix | Delete
// Add entry for the main page (only if we're at the first one) and it isn't already going to be included as a page.
[628] Fix | Delete
if ( 1 === $number && 'page' !== get_option( 'show_on_front' ) ) {
[629] Fix | Delete
$item_array = array(
[630] Fix | Delete
'url' => array(
[631] Fix | Delete
'loc' => home_url( '/' ),
[632] Fix | Delete
),
[633] Fix | Delete
);
[634] Fix | Delete
[635] Fix | Delete
/**
[636] Fix | Delete
* Filter associative array with data to build <url> node
[637] Fix | Delete
* and its descendants for site home.
[638] Fix | Delete
*
[639] Fix | Delete
* @module sitemaps
[640] Fix | Delete
*
[641] Fix | Delete
* @since 3.9.0
[642] Fix | Delete
*
[643] Fix | Delete
* @param array $blog_home Data to build parent and children nodes for site home.
[644] Fix | Delete
*/
[645] Fix | Delete
$item_array = apply_filters( 'jetpack_sitemap_url_home', $item_array );
[646] Fix | Delete
[647] Fix | Delete
$buffer->append( $item_array );
[648] Fix | Delete
}
[649] Fix | Delete
[650] Fix | Delete
// Add as many items to the buffer as possible.
[651] Fix | Delete
while ( $last_post_id >= 0 && false === $buffer->is_full() ) {
[652] Fix | Delete
$posts = $this->librarian->query_posts_after_id(
[653] Fix | Delete
$last_post_id,
[654] Fix | Delete
JP_SITEMAP_BATCH_SIZE
[655] Fix | Delete
);
[656] Fix | Delete
[657] Fix | Delete
if ( null == $posts ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual -- WPCS: loose comparison ok.
[658] Fix | Delete
$any_posts_left = false;
[659] Fix | Delete
break;
[660] Fix | Delete
}
[661] Fix | Delete
[662] Fix | Delete
foreach ( $posts as $post ) {
[663] Fix | Delete
$current_item = $this->post_to_sitemap_item( $post );
[664] Fix | Delete
[665] Fix | Delete
if ( true === $buffer->append( $current_item['xml'] ) ) {
[666] Fix | Delete
$last_post_id = $post->ID;
[667] Fix | Delete
$buffer->view_time( $current_item['last_modified'] );
[668] Fix | Delete
} else {
[669] Fix | Delete
break;
[670] Fix | Delete
}
[671] Fix | Delete
}
[672] Fix | Delete
}
[673] Fix | Delete
[674] Fix | Delete
// Handle other page sitemap URLs.
[675] Fix | Delete
if ( false === $any_posts_left || $last_post_id < 0 ) {
[676] Fix | Delete
// Negative IDs are used to track URL indexes.
[677] Fix | Delete
$last_post_id = min( 0, $last_post_id );
[678] Fix | Delete
$any_posts_left = true; // Reinitialize.
[679] Fix | Delete
[680] Fix | Delete
/**
[681] Fix | Delete
* Filter other page sitemap URLs.
[682] Fix | Delete
*
[683] Fix | Delete
* @module sitemaps
[684] Fix | Delete
*
[685] Fix | Delete
* @since 6.1.0
[686] Fix | Delete
*
[687] Fix | Delete
* @param array $urls An array of other URLs.
[688] Fix | Delete
*/
[689] Fix | Delete
$other_urls = apply_filters( 'jetpack_page_sitemap_other_urls', array() );
[690] Fix | Delete
[691] Fix | Delete
if ( $other_urls ) { // Start with index [1].
[692] Fix | Delete
$other_urls = array_values( $other_urls );
[693] Fix | Delete
array_unshift( $other_urls, $other_urls[0] );
[694] Fix | Delete
unset( $other_urls[0] );
[695] Fix | Delete
}
[696] Fix | Delete
[697] Fix | Delete
// Add as many items to the buffer as possible.
[698] Fix | Delete
while ( false === $buffer->is_full() ) {
[699] Fix | Delete
$last_post_id_index = abs( $last_post_id );
[700] Fix | Delete
$start_from_post_id_index = $last_post_id_index ? $last_post_id_index + 1 : 0;
[701] Fix | Delete
$urls = array_slice(
[702] Fix | Delete
$other_urls,
[703] Fix | Delete
$start_from_post_id_index,
[704] Fix | Delete
JP_SITEMAP_BATCH_SIZE,
[705] Fix | Delete
true
[706] Fix | Delete
);
[707] Fix | Delete
[708] Fix | Delete
if ( ! $urls ) {
[709] Fix | Delete
$any_posts_left = false;
[710] Fix | Delete
break;
[711] Fix | Delete
}
[712] Fix | Delete
[713] Fix | Delete
foreach ( $urls as $index => $url ) {
[714] Fix | Delete
if ( ! is_array( $url ) ) {
[715] Fix | Delete
$url = array( 'loc' => $url );
[716] Fix | Delete
}
[717] Fix | Delete
$item = array( 'xml' => compact( 'url' ) );
[718] Fix | Delete
[719] Fix | Delete
if ( true === $buffer->append( $item['xml'] ) ) {
[720] Fix | Delete
$last_post_id = -$index;
[721] Fix | Delete
if ( isset( $url['lastmod'] ) ) {
[722] Fix | Delete
$buffer->view_time( jp_sitemap_datetime( $url['lastmod'] ) );
[723] Fix | Delete
}
[724] Fix | Delete
} else {
[725] Fix | Delete
break;
[726] Fix | Delete
}
[727] Fix | Delete
}
[728] Fix | Delete
}
[729] Fix | Delete
}
[730] Fix | Delete
[731] Fix | Delete
// If no items were added, return false.
[732] Fix | Delete
if ( true === $buffer->is_empty() ) {
[733] Fix | Delete
return false;
[734] Fix | Delete
}
[735] Fix | Delete
[736] Fix | Delete
/**
[737] Fix | Delete
* Filter sitemap before rendering it as XML.
[738] Fix | Delete
*
[739] Fix | Delete
* @module sitemaps
[740] Fix | Delete
*
[741] Fix | Delete
* @since 3.9.0
[742] Fix | Delete
* @since 5.3.0 returns an element of DOMDocument type instead of SimpleXMLElement
[743] Fix | Delete
*
[744] Fix | Delete
* @param DOMDocument $doc Data tree for sitemap.
[745] Fix | Delete
* @param string $last_modified Date of last modification.
[746] Fix | Delete
*/
[747] Fix | Delete
if ( has_filter( 'jetpack_print_sitemap' ) ) {
[748] Fix | Delete
apply_filters(
[749] Fix | Delete
'jetpack_print_sitemap',
[750] Fix | Delete
$buffer->get_document(),
[751] Fix | Delete
$buffer->last_modified()
[752] Fix | Delete
);
[753] Fix | Delete
}
[754] Fix | Delete
[755] Fix | Delete
// Store the buffer as the content of a sitemap row.
[756] Fix | Delete
$this->librarian->store_sitemap_data(
[757] Fix | Delete
$number,
[758] Fix | Delete
JP_PAGE_SITEMAP_TYPE,
[759] Fix | Delete
$buffer->contents(),
[760] Fix | Delete
$buffer->last_modified()
[761] Fix | Delete
);
[762] Fix | Delete
[763] Fix | Delete
/*
[764] Fix | Delete
* Now report back with the ID of the last post ID to be
[765] Fix | Delete
* successfully added and whether there are any posts left.
[766] Fix | Delete
*/
[767] Fix | Delete
return array(
[768] Fix | Delete
'last_id' => $last_post_id,
[769] Fix | Delete
'any_left' => $any_posts_left,
[770] Fix | Delete
'last_modified' => $buffer->last_modified(),
[771] Fix | Delete
);
[772] Fix | Delete
}
[773] Fix | Delete
[774] Fix | Delete
/**
[775] Fix | Delete
* Build and store a single image sitemap. Returns false if no sitemap is built.
[776] Fix | Delete
*
[777] Fix | Delete
* Side effect: Create/update an image sitemap row.
[778] Fix | Delete
*
[779] Fix | Delete
* @access private
[780] Fix | Delete
* @since 4.8.0
[781] Fix | Delete
*
[782] Fix | Delete
* @param int $number The number of the current sitemap.
[783] Fix | Delete
* @param int $from_id The greatest lower bound of the IDs of the posts to be included.
[784] Fix | Delete
*
[785] Fix | Delete
* @return bool|array @args {
[786] Fix | Delete
* @type int $last_id The ID of the last item to be successfully added to the buffer.
[787] Fix | Delete
* @type bool $any_left 'true' if there are items which haven't been saved to a sitemap, 'false' otherwise.
[788] Fix | Delete
* @type string $last_modified The most recent timestamp to appear on the sitemap.
[789] Fix | Delete
* }
[790] Fix | Delete
*/
[791] Fix | Delete
public function build_one_image_sitemap( $number, $from_id ) {
[792] Fix | Delete
$last_post_id = $from_id;
[793] Fix | Delete
$any_posts_left = true;
[794] Fix | Delete
[795] Fix | Delete
if ( $this->logger ) {
[796] Fix | Delete
$debug_name = jp_sitemap_filename( JP_IMAGE_SITEMAP_TYPE, $number );
[797] Fix | Delete
$this->logger->report( "-- Building $debug_name" );
[798] Fix | Delete
}
[799] Fix | Delete
[800] Fix | Delete
$buffer = Jetpack_Sitemap_Buffer_Factory::create(
[801] Fix | Delete
'image',
[802] Fix | Delete
JP_SITEMAP_MAX_ITEMS,
[803] Fix | Delete
JP_SITEMAP_MAX_BYTES
[804] Fix | Delete
);
[805] Fix | Delete
[806] Fix | Delete
if ( ! $buffer ) {
[807] Fix | Delete
return false;
[808] Fix | Delete
}
[809] Fix | Delete
[810] Fix | Delete
// Add as many items to the buffer as possible.
[811] Fix | Delete
while ( false === $buffer->is_full() ) {
[812] Fix | Delete
$posts = $this->librarian->query_images_after_id(
[813] Fix | Delete
$last_post_id,
[814] Fix | Delete
JP_SITEMAP_BATCH_SIZE
[815] Fix | Delete
);
[816] Fix | Delete
[817] Fix | Delete
if ( null == $posts ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual -- WPCS: loose comparison ok.
[818] Fix | Delete
$any_posts_left = false;
[819] Fix | Delete
break;
[820] Fix | Delete
}
[821] Fix | Delete
[822] Fix | Delete
foreach ( $posts as $post ) {
[823] Fix | Delete
$current_item = $this->image_post_to_sitemap_item( $post );
[824] Fix | Delete
[825] Fix | Delete
if ( true === $buffer->append( $current_item['xml'] ) ) {
[826] Fix | Delete
$last_post_id = $post->ID;
[827] Fix | Delete
$buffer->view_time( $current_item['last_modified'] );
[828] Fix | Delete
} else {
[829] Fix | Delete
break;
[830] Fix | Delete
}
[831] Fix | Delete
}
[832] Fix | Delete
}
[833] Fix | Delete
[834] Fix | Delete
// If no items were added, return false.
[835] Fix | Delete
if ( true === $buffer->is_empty() ) {
[836] Fix | Delete
return false;
[837] Fix | Delete
}
[838] Fix | Delete
[839] Fix | Delete
// Store the buffer as the content of a jp_sitemap post.
[840] Fix | Delete
$this->librarian->store_sitemap_data(
[841] Fix | Delete
$number,
[842] Fix | Delete
JP_IMAGE_SITEMAP_TYPE,
[843] Fix | Delete
$buffer->contents(),
[844] Fix | Delete
$buffer->last_modified()
[845] Fix | Delete
);
[846] Fix | Delete
[847] Fix | Delete
/*
[848] Fix | Delete
* Now report back with the ID of the last post to be
[849] Fix | Delete
* successfully added and whether there are any posts left.
[850] Fix | Delete
*/
[851] Fix | Delete
return array(
[852] Fix | Delete
'last_id' => $last_post_id,
[853] Fix | Delete
'any_left' => $any_posts_left,
[854] Fix | Delete
'last_modified' => $buffer->last_modified(),
[855] Fix | Delete
);
[856] Fix | Delete
}
[857] Fix | Delete
[858] Fix | Delete
/**
[859] Fix | Delete
* Build and store a single video sitemap. Returns false if no sitemap is built.
[860] Fix | Delete
*
[861] Fix | Delete
* Side effect: Create/update an video sitemap row.
[862] Fix | Delete
*
[863] Fix | Delete
* @access private
[864] Fix | Delete
* @since 4.8.0
[865] Fix | Delete
*
[866] Fix | Delete
* @param int $number The number of the current sitemap.
[867] Fix | Delete
* @param int $from_id The greatest lower bound of the IDs of the posts to be included.
[868] Fix | Delete
*
[869] Fix | Delete
* @return bool|array @args {
[870] Fix | Delete
* @type int $last_id The ID of the last item to be successfully added to the buffer.
[871] Fix | Delete
* @type bool $any_left 'true' if there are items which haven't been saved to a sitemap, 'false' otherwise.
[872] Fix | Delete
* @type string $last_modified The most recent timestamp to appear on the sitemap.
[873] Fix | Delete
* }
[874] Fix | Delete
*/
[875] Fix | Delete
public function build_one_video_sitemap( $number, $from_id ) {
[876] Fix | Delete
$last_post_id = $from_id;
[877] Fix | Delete
$any_posts_left = true;
[878] Fix | Delete
[879] Fix | Delete
if ( $this->logger ) {
[880] Fix | Delete
$debug_name = jp_sitemap_filename( JP_VIDEO_SITEMAP_TYPE, $number );
[881] Fix | Delete
$this->logger->report( "-- Building $debug_name" );
[882] Fix | Delete
}
[883] Fix | Delete
[884] Fix | Delete
$buffer = Jetpack_Sitemap_Buffer_Factory::create(
[885] Fix | Delete
'video',
[886] Fix | Delete
JP_SITEMAP_MAX_ITEMS,
[887] Fix | Delete
JP_SITEMAP_MAX_BYTES
[888] Fix | Delete
);
[889] Fix | Delete
[890] Fix | Delete
if ( ! $buffer ) {
[891] Fix | Delete
return false;
[892] Fix | Delete
}
[893] Fix | Delete
[894] Fix | Delete
// Add as many items to the buffer as possible.
[895] Fix | Delete
while ( false === $buffer->is_full() ) {
[896] Fix | Delete
$posts = $this->librarian->query_videos_after_id(
[897] Fix | Delete
$last_post_id,
[898] Fix | Delete
JP_SITEMAP_BATCH_SIZE
[899] Fix | Delete
);
[900] Fix | Delete
[901] Fix | Delete
if ( null == $posts ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual -- WPCS: loose comparison ok.
[902] Fix | Delete
$any_posts_left = false;
[903] Fix | Delete
break;
[904] Fix | Delete
}
[905] Fix | Delete
[906] Fix | Delete
foreach ( $posts as $post ) {
[907] Fix | Delete
$current_item = $this->video_post_to_sitemap_item( $post );
[908] Fix | Delete
[909] Fix | Delete
if ( true === $buffer->append( $current_item['xml'] ) ) {
[910] Fix | Delete
$last_post_id = $post->ID;
[911] Fix | Delete
$buffer->view_time( $current_item['last_modified'] );
[912] Fix | Delete
} else {
[913] Fix | Delete
break;
[914] Fix | Delete
}
[915] Fix | Delete
}
[916] Fix | Delete
}
[917] Fix | Delete
[918] Fix | Delete
// If no items were added, return false.
[919] Fix | Delete
if ( true === $buffer->is_empty() ) {
[920] Fix | Delete
return false;
[921] Fix | Delete
}
[922] Fix | Delete
[923] Fix | Delete
if ( false === $buffer->is_empty() ) {
[924] Fix | Delete
$this->librarian->store_sitemap_data(
[925] Fix | Delete
$number,
[926] Fix | Delete
JP_VIDEO_SITEMAP_TYPE,
[927] Fix | Delete
$buffer->contents(),
[928] Fix | Delete
$buffer->last_modified()
[929] Fix | Delete
);
[930] Fix | Delete
}
[931] Fix | Delete
[932] Fix | Delete
/*
[933] Fix | Delete
* Now report back with the ID of the last post to be
[934] Fix | Delete
* successfully added and whether there are any posts left.
[935] Fix | Delete
*/
[936] Fix | Delete
return array(
[937] Fix | Delete
'last_id' => $last_post_id,
[938] Fix | Delete
'any_left' => $any_posts_left,
[939] Fix | Delete
'last_modified' => $buffer->last_modified(),
[940] Fix | Delete
);
[941] Fix | Delete
}
[942] Fix | Delete
[943] Fix | Delete
/**
[944] Fix | Delete
* Build and store a single page sitemap index. Return false if no index is built.
[945] Fix | Delete
*
[946] Fix | Delete
* Side effect: Create/update a sitemap index row.
[947] Fix | Delete
*
[948] Fix | Delete
* @access private
[949] Fix | Delete
* @since 4.8.0
[950] Fix | Delete
*
[951] Fix | Delete
* @param int $number The number of the current sitemap index.
[952] Fix | Delete
* @param int $from_id The greatest lower bound of the IDs of the sitemaps to be included.
[953] Fix | Delete
* @param string $datetime Datetime of previous sitemap in 'YYYY-MM-DD hh:mm:ss' format.
[954] Fix | Delete
* @param string $index_type Sitemap index type.
[955] Fix | Delete
*
[956] Fix | Delete
* @return bool|array @args {
[957] Fix | Delete
* @type int $last_id The ID of the last item to be successfully added to the buffer.
[958] Fix | Delete
* @type bool $any_left 'true' if there are items which haven't been saved to a sitemap, 'false' otherwise.
[959] Fix | Delete
* @type string $last_modified The most recent timestamp to appear on the sitemap.
[960] Fix | Delete
* }
[961] Fix | Delete
*/
[962] Fix | Delete
private function build_one_sitemap_index( $number, $from_id, $datetime, $index_type ) {
[963] Fix | Delete
$last_sitemap_id = $from_id;
[964] Fix | Delete
$any_sitemaps_left = true;
[965] Fix | Delete
[966] Fix | Delete
// Check the datetime format.
[967] Fix | Delete
$datetime = jp_sitemap_datetime( $datetime );
[968] Fix | Delete
[969] Fix | Delete
$sitemap_type = jp_sitemap_child_type_of( $index_type );
[970] Fix | Delete
[971] Fix | Delete
if ( $this->logger ) {
[972] Fix | Delete
$index_debug_name = jp_sitemap_filename( $index_type, $number );
[973] Fix | Delete
$this->logger->report( "-- Building $index_debug_name" );
[974] Fix | Delete
}
[975] Fix | Delete
[976] Fix | Delete
$buffer = Jetpack_Sitemap_Buffer_Factory::create(
[977] Fix | Delete
'master',
[978] Fix | Delete
JP_SITEMAP_MAX_ITEMS,
[979] Fix | Delete
JP_SITEMAP_MAX_BYTES,
[980] Fix | Delete
$datetime
[981] Fix | Delete
);
[982] Fix | Delete
if ( ! $buffer ) {
[983] Fix | Delete
return false;
[984] Fix | Delete
}
[985] Fix | Delete
[986] Fix | Delete
// Add pointer to the previous sitemap index (unless we're at the first one).
[987] Fix | Delete
if ( 1 !== $number ) {
[988] Fix | Delete
$i = $number - 1;
[989] Fix | Delete
$prev_index_url = $this->finder->construct_sitemap_url(
[990] Fix | Delete
jp_sitemap_filename( $index_type, $i )
[991] Fix | Delete
);
[992] Fix | Delete
[993] Fix | Delete
$item_array = array(
[994] Fix | Delete
'sitemap' => array(
[995] Fix | Delete
'loc' => $prev_index_url,
[996] Fix | Delete
'lastmod' => $datetime,
[997] Fix | Delete
),
[998] Fix | Delete
);
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function