Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/jetpack/modules/sitemaps
File: sitemap-builder.php
[1000] Fix | Delete
$buffer->append( $item_array );
[1001] Fix | Delete
}
[1002] Fix | Delete
[1003] Fix | Delete
// Add as many items to the buffer as possible.
[1004] Fix | Delete
while ( false === $buffer->is_full() ) {
[1005] Fix | Delete
// Retrieve a batch of posts (in order).
[1006] Fix | Delete
$posts = $this->librarian->query_sitemaps_after_id(
[1007] Fix | Delete
$sitemap_type,
[1008] Fix | Delete
$last_sitemap_id,
[1009] Fix | Delete
JP_SITEMAP_BATCH_SIZE
[1010] Fix | Delete
);
[1011] Fix | Delete
[1012] Fix | Delete
// If there were no posts to get, make a note.
[1013] Fix | Delete
if ( null == $posts ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual -- WPCS: loose comparison ok.
[1014] Fix | Delete
$any_sitemaps_left = false;
[1015] Fix | Delete
break;
[1016] Fix | Delete
}
[1017] Fix | Delete
[1018] Fix | Delete
// Otherwise, loop through each post in the batch.
[1019] Fix | Delete
foreach ( $posts as $post ) {
[1020] Fix | Delete
// Generate the sitemap XML for the post.
[1021] Fix | Delete
$current_item = $this->sitemap_row_to_index_item( (array) $post );
[1022] Fix | Delete
[1023] Fix | Delete
// Try adding this item to the buffer.
[1024] Fix | Delete
if ( true === $buffer->append( $current_item['xml'] ) ) {
[1025] Fix | Delete
$last_sitemap_id = $post['ID'];
[1026] Fix | Delete
$buffer->view_time( $current_item['last_modified'] );
[1027] Fix | Delete
} else {
[1028] Fix | Delete
// Otherwise stop looping through posts.
[1029] Fix | Delete
break;
[1030] Fix | Delete
}
[1031] Fix | Delete
}
[1032] Fix | Delete
}
[1033] Fix | Delete
[1034] Fix | Delete
// If no items were added, return false.
[1035] Fix | Delete
if ( true === $buffer->is_empty() ) {
[1036] Fix | Delete
return false;
[1037] Fix | Delete
}
[1038] Fix | Delete
[1039] Fix | Delete
$this->librarian->store_sitemap_data(
[1040] Fix | Delete
$number,
[1041] Fix | Delete
$index_type,
[1042] Fix | Delete
$buffer->contents(),
[1043] Fix | Delete
$buffer->last_modified()
[1044] Fix | Delete
);
[1045] Fix | Delete
[1046] Fix | Delete
/*
[1047] Fix | Delete
* Now report back with the ID of the last sitemap post ID to
[1048] Fix | Delete
* be successfully added, whether there are any sitemap posts
[1049] Fix | Delete
* left, and the most recent modification time seen.
[1050] Fix | Delete
*/
[1051] Fix | Delete
return array(
[1052] Fix | Delete
'last_id' => $last_sitemap_id,
[1053] Fix | Delete
'any_left' => $any_sitemaps_left,
[1054] Fix | Delete
'last_modified' => $buffer->last_modified(),
[1055] Fix | Delete
);
[1056] Fix | Delete
}
[1057] Fix | Delete
[1058] Fix | Delete
/**
[1059] Fix | Delete
* Construct the sitemap index url entry for a sitemap row.
[1060] Fix | Delete
*
[1061] Fix | Delete
* @link https://www.sitemaps.org/protocol.html#sitemapIndex_sitemap
[1062] Fix | Delete
*
[1063] Fix | Delete
* @access private
[1064] Fix | Delete
* @since 4.8.0
[1065] Fix | Delete
*
[1066] Fix | Delete
* @param array $row The sitemap data to be processed.
[1067] Fix | Delete
*
[1068] Fix | Delete
* @return string An XML fragment representing the post URL.
[1069] Fix | Delete
*/
[1070] Fix | Delete
private function sitemap_row_to_index_item( $row ) {
[1071] Fix | Delete
$url = $this->finder->construct_sitemap_url( $row['post_title'] );
[1072] Fix | Delete
[1073] Fix | Delete
$item_array = array(
[1074] Fix | Delete
'sitemap' => array(
[1075] Fix | Delete
'loc' => $url,
[1076] Fix | Delete
'lastmod' => jp_sitemap_datetime( $row['post_date'] ),
[1077] Fix | Delete
),
[1078] Fix | Delete
);
[1079] Fix | Delete
[1080] Fix | Delete
return array(
[1081] Fix | Delete
'xml' => $item_array,
[1082] Fix | Delete
'last_modified' => $row['post_date'],
[1083] Fix | Delete
);
[1084] Fix | Delete
}
[1085] Fix | Delete
[1086] Fix | Delete
/**
[1087] Fix | Delete
* This is served instead of a 404 when the master sitemap is requested
[1088] Fix | Delete
* but not yet generated.
[1089] Fix | Delete
*
[1090] Fix | Delete
* @access public
[1091] Fix | Delete
* @since 6.7.0
[1092] Fix | Delete
*
[1093] Fix | Delete
* @return string The empty sitemap xml.
[1094] Fix | Delete
*/
[1095] Fix | Delete
public function empty_sitemap_xml() {
[1096] Fix | Delete
$empty_sitemap = new Jetpack_Sitemap_Buffer_Empty();
[1097] Fix | Delete
return $empty_sitemap->contents();
[1098] Fix | Delete
}
[1099] Fix | Delete
[1100] Fix | Delete
/**
[1101] Fix | Delete
* Build and return the news sitemap xml. Note that the result of this
[1102] Fix | Delete
* function is cached in the transient 'jetpack_news_sitemap_xml'.
[1103] Fix | Delete
*
[1104] Fix | Delete
* @access public
[1105] Fix | Delete
* @since 4.8.0
[1106] Fix | Delete
*
[1107] Fix | Delete
* @return string The news sitemap xml.
[1108] Fix | Delete
*/
[1109] Fix | Delete
public function news_sitemap_xml() {
[1110] Fix | Delete
$buffer = Jetpack_Sitemap_Buffer_Factory::create(
[1111] Fix | Delete
'news',
[1112] Fix | Delete
JP_SITEMAP_MAX_ITEMS,
[1113] Fix | Delete
JP_SITEMAP_MAX_BYTES
[1114] Fix | Delete
);
[1115] Fix | Delete
[1116] Fix | Delete
if ( ! $buffer ) {
[1117] Fix | Delete
return '';
[1118] Fix | Delete
}
[1119] Fix | Delete
[1120] Fix | Delete
$the_stored_news_sitemap = get_transient( 'jetpack_news_sitemap_xml' );
[1121] Fix | Delete
[1122] Fix | Delete
if ( false === $the_stored_news_sitemap ) {
[1123] Fix | Delete
[1124] Fix | Delete
if ( $this->logger ) {
[1125] Fix | Delete
$this->logger->report( 'Beginning news sitemap generation.' );
[1126] Fix | Delete
}
[1127] Fix | Delete
[1128] Fix | Delete
/**
[1129] Fix | Delete
* Filter limit of entries to include in news sitemap.
[1130] Fix | Delete
*
[1131] Fix | Delete
* @module sitemaps
[1132] Fix | Delete
*
[1133] Fix | Delete
* @since 3.9.0
[1134] Fix | Delete
*
[1135] Fix | Delete
* @param int $count Number of entries to include in news sitemap.
[1136] Fix | Delete
*/
[1137] Fix | Delete
$item_limit = apply_filters(
[1138] Fix | Delete
'jetpack_sitemap_news_sitemap_count',
[1139] Fix | Delete
JP_NEWS_SITEMAP_MAX_ITEMS
[1140] Fix | Delete
);
[1141] Fix | Delete
[1142] Fix | Delete
$posts = $this->librarian->query_most_recent_posts( $item_limit );
[1143] Fix | Delete
if ( empty( $posts ) ) {
[1144] Fix | Delete
$buffer->append( array( 'url' => array( 'loc' => home_url( '/' ) ) ) );
[1145] Fix | Delete
} else {
[1146] Fix | Delete
foreach ( $posts as $post ) {
[1147] Fix | Delete
$current_item = $this->post_to_news_sitemap_item( $post );
[1148] Fix | Delete
[1149] Fix | Delete
if ( $current_item['xml'] !== null && false === $buffer->append( $current_item['xml'] ) ) {
[1150] Fix | Delete
break;
[1151] Fix | Delete
}
[1152] Fix | Delete
}
[1153] Fix | Delete
}
[1154] Fix | Delete
[1155] Fix | Delete
if ( $this->logger ) {
[1156] Fix | Delete
$this->logger->time( 'End news sitemap generation.' );
[1157] Fix | Delete
}
[1158] Fix | Delete
[1159] Fix | Delete
$the_stored_news_sitemap = $buffer->contents();
[1160] Fix | Delete
[1161] Fix | Delete
set_transient(
[1162] Fix | Delete
'jetpack_news_sitemap_xml',
[1163] Fix | Delete
$the_stored_news_sitemap,
[1164] Fix | Delete
JP_NEWS_SITEMAP_INTERVAL
[1165] Fix | Delete
);
[1166] Fix | Delete
} // End if.
[1167] Fix | Delete
[1168] Fix | Delete
return $the_stored_news_sitemap;
[1169] Fix | Delete
}
[1170] Fix | Delete
[1171] Fix | Delete
/**
[1172] Fix | Delete
* Construct the sitemap url entry for a WP_Post.
[1173] Fix | Delete
*
[1174] Fix | Delete
* @link https://www.sitemaps.org/protocol.html#urldef
[1175] Fix | Delete
* @access private
[1176] Fix | Delete
* @since 4.8.0
[1177] Fix | Delete
*
[1178] Fix | Delete
* @param object $post The post to be processed. Similar to WP_Post, but without post_content and post_content_filtered.
[1179] Fix | Delete
*
[1180] Fix | Delete
* @return array
[1181] Fix | Delete
* @type array $xml An XML fragment representing the post URL.
[1182] Fix | Delete
* @type string $last_modified Date post was last modified.
[1183] Fix | Delete
*/
[1184] Fix | Delete
private function post_to_sitemap_item( $post ) {
[1185] Fix | Delete
[1186] Fix | Delete
/**
[1187] Fix | Delete
* Filter condition to allow skipping specific posts in sitemap.
[1188] Fix | Delete
*
[1189] Fix | Delete
* @module sitemaps
[1190] Fix | Delete
*
[1191] Fix | Delete
* @since 3.9.0
[1192] Fix | Delete
*
[1193] Fix | Delete
* @param bool $skip Current boolean. False by default, so no post is skipped.
[1194] Fix | Delete
* @param object $post Current post in the form of a $wpdb result object. Not WP_Post.
[1195] Fix | Delete
* Doesn't have all the properties of a WP_Post.
[1196] Fix | Delete
*/
[1197] Fix | Delete
if ( true === apply_filters( 'jetpack_sitemap_skip_post', false, $post ) ) {
[1198] Fix | Delete
return array(
[1199] Fix | Delete
'xml' => null,
[1200] Fix | Delete
'last_modified' => null,
[1201] Fix | Delete
);
[1202] Fix | Delete
}
[1203] Fix | Delete
[1204] Fix | Delete
$url = esc_url( get_permalink( $post ) );
[1205] Fix | Delete
[1206] Fix | Delete
/*
[1207] Fix | Delete
* Spec requires the URL to be <=2048 bytes.
[1208] Fix | Delete
* In practice this constraint is unlikely to be violated.
[1209] Fix | Delete
*/
[1210] Fix | Delete
if ( 2048 < strlen( $url ) ) {
[1211] Fix | Delete
$url = home_url() . '/?p=' . $post->ID;
[1212] Fix | Delete
}
[1213] Fix | Delete
[1214] Fix | Delete
$last_modified = $post->post_modified_gmt;
[1215] Fix | Delete
[1216] Fix | Delete
// Check for more recent comments.
[1217] Fix | Delete
// Note that 'Y-m-d h:i:s' strings sort lexicographically.
[1218] Fix | Delete
if ( 0 < $post->comment_count ) {
[1219] Fix | Delete
$last_modified = max(
[1220] Fix | Delete
$last_modified,
[1221] Fix | Delete
$this->librarian->query_latest_approved_comment_time_on_post( $post->ID )
[1222] Fix | Delete
);
[1223] Fix | Delete
}
[1224] Fix | Delete
[1225] Fix | Delete
$item_array = array(
[1226] Fix | Delete
'url' => array(
[1227] Fix | Delete
'loc' => $url,
[1228] Fix | Delete
'lastmod' => jp_sitemap_datetime( $last_modified ),
[1229] Fix | Delete
),
[1230] Fix | Delete
);
[1231] Fix | Delete
[1232] Fix | Delete
/**
[1233] Fix | Delete
* Filter sitemap URL item before rendering it as XML.
[1234] Fix | Delete
*
[1235] Fix | Delete
* @module sitemaps
[1236] Fix | Delete
*
[1237] Fix | Delete
* @since 3.9.0
[1238] Fix | Delete
*
[1239] Fix | Delete
* @param array $tree Associative array representing sitemap URL element.
[1240] Fix | Delete
* @param int $post_id ID of the post being processed.
[1241] Fix | Delete
*/
[1242] Fix | Delete
$item_array = apply_filters( 'jetpack_sitemap_url', $item_array, $post->ID );
[1243] Fix | Delete
[1244] Fix | Delete
return array(
[1245] Fix | Delete
'xml' => $item_array,
[1246] Fix | Delete
'last_modified' => $last_modified,
[1247] Fix | Delete
);
[1248] Fix | Delete
}
[1249] Fix | Delete
[1250] Fix | Delete
/**
[1251] Fix | Delete
* Construct the image sitemap url entry for a WP_Post of image type.
[1252] Fix | Delete
*
[1253] Fix | Delete
* @link https://www.sitemaps.org/protocol.html#urldef
[1254] Fix | Delete
*
[1255] Fix | Delete
* @access private
[1256] Fix | Delete
* @since 4.8.0
[1257] Fix | Delete
*
[1258] Fix | Delete
* @param WP_Post $post The image post to be processed.
[1259] Fix | Delete
*
[1260] Fix | Delete
* @return array
[1261] Fix | Delete
* @type array $xml An XML fragment representing the post URL.
[1262] Fix | Delete
* @type string $last_modified Date post was last modified.
[1263] Fix | Delete
*/
[1264] Fix | Delete
private function image_post_to_sitemap_item( $post ) {
[1265] Fix | Delete
[1266] Fix | Delete
/**
[1267] Fix | Delete
* Filter condition to allow skipping specific image posts in the sitemap.
[1268] Fix | Delete
*
[1269] Fix | Delete
* @module sitemaps
[1270] Fix | Delete
*
[1271] Fix | Delete
* @since 4.8.0
[1272] Fix | Delete
*
[1273] Fix | Delete
* @param bool $skip Current boolean. False by default, so no post is skipped.
[1274] Fix | Delete
* @param WP_POST $post Current post object.
[1275] Fix | Delete
*/
[1276] Fix | Delete
if ( apply_filters( 'jetpack_sitemap_image_skip_post', false, $post ) ) {
[1277] Fix | Delete
return array(
[1278] Fix | Delete
'xml' => null,
[1279] Fix | Delete
'last_modified' => null,
[1280] Fix | Delete
);
[1281] Fix | Delete
}
[1282] Fix | Delete
[1283] Fix | Delete
$url = wp_get_attachment_url( $post->ID );
[1284] Fix | Delete
[1285] Fix | Delete
// Do not include the image if the attached parent is not published.
[1286] Fix | Delete
// Unattached will be published. Otherwise, will inherit parent status.
[1287] Fix | Delete
if ( 'publish' !== get_post_status( $post ) ) {
[1288] Fix | Delete
return array(
[1289] Fix | Delete
'xml' => null,
[1290] Fix | Delete
'last_modified' => null,
[1291] Fix | Delete
);
[1292] Fix | Delete
}
[1293] Fix | Delete
[1294] Fix | Delete
$parent_url = get_permalink( get_post( $post->post_parent ) );
[1295] Fix | Delete
if ( '' == $parent_url ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual -- WPCS: loose comparison ok.
[1296] Fix | Delete
$parent_url = get_permalink( $post );
[1297] Fix | Delete
}
[1298] Fix | Delete
[1299] Fix | Delete
$item_array = array(
[1300] Fix | Delete
'url' => array(
[1301] Fix | Delete
'loc' => $parent_url,
[1302] Fix | Delete
'lastmod' => jp_sitemap_datetime( $post->post_modified_gmt ),
[1303] Fix | Delete
'image:image' => array(
[1304] Fix | Delete
'image:loc' => $url,
[1305] Fix | Delete
),
[1306] Fix | Delete
),
[1307] Fix | Delete
);
[1308] Fix | Delete
[1309] Fix | Delete
/**
[1310] Fix | Delete
* Filter associative array with data to build <url> node
[1311] Fix | Delete
* and its descendants for current post in image sitemap.
[1312] Fix | Delete
*
[1313] Fix | Delete
* @module sitemaps
[1314] Fix | Delete
*
[1315] Fix | Delete
* @since 4.8.0
[1316] Fix | Delete
*
[1317] Fix | Delete
* @param array $item_array Data to build parent and children nodes for current post.
[1318] Fix | Delete
* @param int $post_id Current image post ID.
[1319] Fix | Delete
*/
[1320] Fix | Delete
$item_array = apply_filters(
[1321] Fix | Delete
'jetpack_sitemap_image_sitemap_item',
[1322] Fix | Delete
$item_array,
[1323] Fix | Delete
$post->ID
[1324] Fix | Delete
);
[1325] Fix | Delete
[1326] Fix | Delete
return array(
[1327] Fix | Delete
'xml' => $item_array,
[1328] Fix | Delete
'last_modified' => $post->post_modified_gmt,
[1329] Fix | Delete
);
[1330] Fix | Delete
}
[1331] Fix | Delete
[1332] Fix | Delete
/**
[1333] Fix | Delete
* Construct the video sitemap url entry for a WP_Post of video type.
[1334] Fix | Delete
*
[1335] Fix | Delete
* @link https://www.sitemaps.org/protocol.html#urldef
[1336] Fix | Delete
* @link https://developers.google.com/webmasters/videosearch/sitemaps
[1337] Fix | Delete
*
[1338] Fix | Delete
* @access private
[1339] Fix | Delete
* @since 4.8.0
[1340] Fix | Delete
*
[1341] Fix | Delete
* @param WP_Post $post The video post to be processed.
[1342] Fix | Delete
*
[1343] Fix | Delete
* @return array
[1344] Fix | Delete
* @type array $xml An XML fragment representing the post URL.
[1345] Fix | Delete
* @type string $last_modified Date post was last modified.
[1346] Fix | Delete
*/
[1347] Fix | Delete
private function video_post_to_sitemap_item( $post ) {
[1348] Fix | Delete
[1349] Fix | Delete
/**
[1350] Fix | Delete
* Filter condition to allow skipping specific video posts in the sitemap.
[1351] Fix | Delete
*
[1352] Fix | Delete
* @module sitemaps
[1353] Fix | Delete
*
[1354] Fix | Delete
* @since 4.8.0
[1355] Fix | Delete
*
[1356] Fix | Delete
* @param bool $skip Current boolean. False by default, so no post is skipped.
[1357] Fix | Delete
* @param WP_POST $post Current post object.
[1358] Fix | Delete
*/
[1359] Fix | Delete
if ( apply_filters( 'jetpack_sitemap_video_skip_post', false, $post ) ) {
[1360] Fix | Delete
return array(
[1361] Fix | Delete
'xml' => null,
[1362] Fix | Delete
'last_modified' => null,
[1363] Fix | Delete
);
[1364] Fix | Delete
}
[1365] Fix | Delete
[1366] Fix | Delete
// Do not include the video if the attached parent is not published.
[1367] Fix | Delete
// Unattached will be published. Otherwise, will inherit parent status.
[1368] Fix | Delete
if ( 'publish' !== get_post_status( $post ) ) {
[1369] Fix | Delete
return array(
[1370] Fix | Delete
'xml' => null,
[1371] Fix | Delete
'last_modified' => null,
[1372] Fix | Delete
);
[1373] Fix | Delete
}
[1374] Fix | Delete
[1375] Fix | Delete
$parent_url = esc_url( get_permalink( get_post( $post->post_parent ) ) );
[1376] Fix | Delete
if ( '' == $parent_url ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual -- WPCS: loose comparison ok.
[1377] Fix | Delete
$parent_url = esc_url( get_permalink( $post ) );
[1378] Fix | Delete
}
[1379] Fix | Delete
[1380] Fix | Delete
// Prepare the content like get_the_content_feed().
[1381] Fix | Delete
$content = $post->post_content;
[1382] Fix | Delete
/** This filter is already documented in core/wp-includes/post-template.php */
[1383] Fix | Delete
$content = apply_filters( 'the_content', $content );
[1384] Fix | Delete
[1385] Fix | Delete
/** This filter is already documented in core/wp-includes/feed.php */
[1386] Fix | Delete
$content = apply_filters( 'the_content_feed', $content, 'rss2' );
[1387] Fix | Delete
[1388] Fix | Delete
// Include thumbnails for VideoPress videos, use blank image for others.
[1389] Fix | Delete
if ( 'complete' === get_post_meta( $post->ID, 'videopress_status', true ) && has_post_thumbnail( $post ) ) {
[1390] Fix | Delete
$video_thumbnail_url = get_the_post_thumbnail_url( $post );
[1391] Fix | Delete
} else {
[1392] Fix | Delete
/**
[1393] Fix | Delete
* Filter the thumbnail image used in the video sitemap for non-VideoPress videos.
[1394] Fix | Delete
*
[1395] Fix | Delete
* @since 7.2.0
[1396] Fix | Delete
*
[1397] Fix | Delete
* @param string $str Image URL.
[1398] Fix | Delete
*/
[1399] Fix | Delete
$video_thumbnail_url = apply_filters( 'jetpack_video_sitemap_default_thumbnail', 'https://s0.wp.com/i/blank.jpg' );
[1400] Fix | Delete
}
[1401] Fix | Delete
[1402] Fix | Delete
$item_array = array(
[1403] Fix | Delete
'url' => array(
[1404] Fix | Delete
'loc' => $parent_url,
[1405] Fix | Delete
'lastmod' => jp_sitemap_datetime( $post->post_modified_gmt ),
[1406] Fix | Delete
'video:video' => array(
[1407] Fix | Delete
/** This filter is already documented in core/wp-includes/feed.php */
[1408] Fix | Delete
'video:title' => apply_filters( 'the_title_rss', $post->post_title ),
[1409] Fix | Delete
'video:thumbnail_loc' => esc_url( $video_thumbnail_url ),
[1410] Fix | Delete
'video:description' => $content,
[1411] Fix | Delete
'video:content_loc' => esc_url( wp_get_attachment_url( $post->ID ) ),
[1412] Fix | Delete
),
[1413] Fix | Delete
),
[1414] Fix | Delete
);
[1415] Fix | Delete
[1416] Fix | Delete
// TODO: Integrate with VideoPress here.
[1417] Fix | Delete
// cf. video:player_loc tag in video sitemap spec.
[1418] Fix | Delete
[1419] Fix | Delete
/**
[1420] Fix | Delete
* Filter associative array with data to build <url> node
[1421] Fix | Delete
* and its descendants for current post in video sitemap.
[1422] Fix | Delete
*
[1423] Fix | Delete
* @module sitemaps
[1424] Fix | Delete
*
[1425] Fix | Delete
* @since 4.8.0
[1426] Fix | Delete
*
[1427] Fix | Delete
* @param array $item_array Data to build parent and children nodes for current post.
[1428] Fix | Delete
* @param int $post_id Current video post ID.
[1429] Fix | Delete
*/
[1430] Fix | Delete
$item_array = apply_filters(
[1431] Fix | Delete
'jetpack_sitemap_video_sitemap_item',
[1432] Fix | Delete
$item_array,
[1433] Fix | Delete
$post->ID
[1434] Fix | Delete
);
[1435] Fix | Delete
[1436] Fix | Delete
return array(
[1437] Fix | Delete
'xml' => $item_array,
[1438] Fix | Delete
'last_modified' => $post->post_modified_gmt,
[1439] Fix | Delete
);
[1440] Fix | Delete
}
[1441] Fix | Delete
[1442] Fix | Delete
/**
[1443] Fix | Delete
* Construct the news sitemap url entry for a WP_Post.
[1444] Fix | Delete
*
[1445] Fix | Delete
* @link https://www.sitemaps.org/protocol.html#urldef
[1446] Fix | Delete
*
[1447] Fix | Delete
* @access private
[1448] Fix | Delete
* @since 4.8.0
[1449] Fix | Delete
*
[1450] Fix | Delete
* @param object $post The post to be processed. Similar to WP_Post, but without post_content and post_content_filtered.
[1451] Fix | Delete
*
[1452] Fix | Delete
* @return string An XML fragment representing the post URL.
[1453] Fix | Delete
*/
[1454] Fix | Delete
private function post_to_news_sitemap_item( $post ) {
[1455] Fix | Delete
[1456] Fix | Delete
// Exclude posts with meta 'jetpack_seo_noindex' set true from the Jetpack news sitemap.
[1457] Fix | Delete
add_filter( 'jetpack_sitemap_news_skip_post', array( 'Jetpack_SEO_Posts', 'exclude_noindex_posts_from_jetpack_sitemap' ), 10, 2 );
[1458] Fix | Delete
[1459] Fix | Delete
/**
[1460] Fix | Delete
* Filter condition to allow skipping specific posts in news sitemap.
[1461] Fix | Delete
*
[1462] Fix | Delete
* @module sitemaps
[1463] Fix | Delete
*
[1464] Fix | Delete
* @since 3.9.0
[1465] Fix | Delete
*
[1466] Fix | Delete
* @param bool $skip Current boolean. False by default, so no post is skipped.
[1467] Fix | Delete
* @param object $post Current post in the form of a $wpdb result object. Not WP_Post.
[1468] Fix | Delete
* Doesn't have all the properties of a WP_Post.
[1469] Fix | Delete
*/
[1470] Fix | Delete
if ( apply_filters( 'jetpack_sitemap_news_skip_post', false, $post ) ) {
[1471] Fix | Delete
return array(
[1472] Fix | Delete
'xml' => null,
[1473] Fix | Delete
);
[1474] Fix | Delete
}
[1475] Fix | Delete
[1476] Fix | Delete
$url = get_permalink( $post );
[1477] Fix | Delete
[1478] Fix | Delete
/*
[1479] Fix | Delete
* Spec requires the URL to be <=2048 bytes.
[1480] Fix | Delete
* In practice this constraint is unlikely to be violated.
[1481] Fix | Delete
*/
[1482] Fix | Delete
if ( 2048 < strlen( $url ) ) {
[1483] Fix | Delete
$url = home_url() . '/?p=' . $post->ID;
[1484] Fix | Delete
}
[1485] Fix | Delete
[1486] Fix | Delete
/*
[1487] Fix | Delete
* Trim the locale to an ISO 639 language code as required by Google.
[1488] Fix | Delete
* Special cases are zh-cn (Simplified Chinese) and zh-tw (Traditional Chinese).
[1489] Fix | Delete
* @link https://www.loc.gov/standards/iso639-2/php/code_list.php
[1490] Fix | Delete
*/
[1491] Fix | Delete
$language = strtolower( get_locale() );
[1492] Fix | Delete
[1493] Fix | Delete
if ( in_array( $language, array( 'zh_tw', 'zh_cn' ), true ) ) {
[1494] Fix | Delete
$language = str_replace( '_', '-', $language );
[1495] Fix | Delete
} else {
[1496] Fix | Delete
$language = preg_replace( '/(_.*)$/i', '', $language );
[1497] Fix | Delete
}
[1498] Fix | Delete
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function