Edit File by line
/home/zeestwma/richards.../wp-inclu...
File: comment.php
'suppress_filters' => false,
[3000] Fix | Delete
'nopaging' => true,
[3001] Fix | Delete
'meta_key' => '_trackbackme',
[3002] Fix | Delete
'fields' => 'ids',
[3003] Fix | Delete
)
[3004] Fix | Delete
);
[3005] Fix | Delete
[3006] Fix | Delete
foreach ( $trackbacks as $trackback ) {
[3007] Fix | Delete
delete_post_meta( $trackback, '_trackbackme' );
[3008] Fix | Delete
do_trackbacks( $trackback );
[3009] Fix | Delete
}
[3010] Fix | Delete
}
[3011] Fix | Delete
[3012] Fix | Delete
/**
[3013] Fix | Delete
* Performs trackbacks.
[3014] Fix | Delete
*
[3015] Fix | Delete
* @since 1.5.0
[3016] Fix | Delete
* @since 4.7.0 `$post` can be a WP_Post object.
[3017] Fix | Delete
*
[3018] Fix | Delete
* @global wpdb $wpdb WordPress database abstraction object.
[3019] Fix | Delete
*
[3020] Fix | Delete
* @param int|WP_Post $post Post ID or object to do trackbacks on.
[3021] Fix | Delete
* @return void|false Returns false on failure.
[3022] Fix | Delete
*/
[3023] Fix | Delete
function do_trackbacks( $post ) {
[3024] Fix | Delete
global $wpdb;
[3025] Fix | Delete
[3026] Fix | Delete
$post = get_post( $post );
[3027] Fix | Delete
[3028] Fix | Delete
if ( ! $post ) {
[3029] Fix | Delete
return false;
[3030] Fix | Delete
}
[3031] Fix | Delete
[3032] Fix | Delete
$to_ping = get_to_ping( $post );
[3033] Fix | Delete
$pinged = get_pung( $post );
[3034] Fix | Delete
[3035] Fix | Delete
if ( empty( $to_ping ) ) {
[3036] Fix | Delete
$wpdb->update( $wpdb->posts, array( 'to_ping' => '' ), array( 'ID' => $post->ID ) );
[3037] Fix | Delete
return;
[3038] Fix | Delete
}
[3039] Fix | Delete
[3040] Fix | Delete
if ( empty( $post->post_excerpt ) ) {
[3041] Fix | Delete
/** This filter is documented in wp-includes/post-template.php */
[3042] Fix | Delete
$excerpt = apply_filters( 'the_content', $post->post_content, $post->ID );
[3043] Fix | Delete
} else {
[3044] Fix | Delete
/** This filter is documented in wp-includes/post-template.php */
[3045] Fix | Delete
$excerpt = apply_filters( 'the_excerpt', $post->post_excerpt );
[3046] Fix | Delete
}
[3047] Fix | Delete
[3048] Fix | Delete
$excerpt = str_replace( ']]>', ']]>', $excerpt );
[3049] Fix | Delete
$excerpt = wp_html_excerpt( $excerpt, 252, '…' );
[3050] Fix | Delete
[3051] Fix | Delete
/** This filter is documented in wp-includes/post-template.php */
[3052] Fix | Delete
$post_title = apply_filters( 'the_title', $post->post_title, $post->ID );
[3053] Fix | Delete
$post_title = strip_tags( $post_title );
[3054] Fix | Delete
[3055] Fix | Delete
if ( $to_ping ) {
[3056] Fix | Delete
foreach ( (array) $to_ping as $tb_ping ) {
[3057] Fix | Delete
$tb_ping = trim( $tb_ping );
[3058] Fix | Delete
if ( ! in_array( $tb_ping, $pinged, true ) ) {
[3059] Fix | Delete
trackback( $tb_ping, $post_title, $excerpt, $post->ID );
[3060] Fix | Delete
$pinged[] = $tb_ping;
[3061] Fix | Delete
} else {
[3062] Fix | Delete
$wpdb->query(
[3063] Fix | Delete
$wpdb->prepare(
[3064] Fix | Delete
"UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s,
[3065] Fix | Delete
'')) WHERE ID = %d",
[3066] Fix | Delete
$tb_ping,
[3067] Fix | Delete
$post->ID
[3068] Fix | Delete
)
[3069] Fix | Delete
);
[3070] Fix | Delete
}
[3071] Fix | Delete
}
[3072] Fix | Delete
}
[3073] Fix | Delete
}
[3074] Fix | Delete
[3075] Fix | Delete
/**
[3076] Fix | Delete
* Sends pings to all of the ping site services.
[3077] Fix | Delete
*
[3078] Fix | Delete
* @since 1.2.0
[3079] Fix | Delete
*
[3080] Fix | Delete
* @param int $post_id Post ID.
[3081] Fix | Delete
* @return int Same post ID as provided.
[3082] Fix | Delete
*/
[3083] Fix | Delete
function generic_ping( $post_id = 0 ) {
[3084] Fix | Delete
$services = get_option( 'ping_sites' );
[3085] Fix | Delete
[3086] Fix | Delete
$services = explode( "\n", $services );
[3087] Fix | Delete
foreach ( (array) $services as $service ) {
[3088] Fix | Delete
$service = trim( $service );
[3089] Fix | Delete
if ( '' !== $service ) {
[3090] Fix | Delete
weblog_ping( $service );
[3091] Fix | Delete
}
[3092] Fix | Delete
}
[3093] Fix | Delete
[3094] Fix | Delete
return $post_id;
[3095] Fix | Delete
}
[3096] Fix | Delete
[3097] Fix | Delete
/**
[3098] Fix | Delete
* Pings back the links found in a post.
[3099] Fix | Delete
*
[3100] Fix | Delete
* @since 0.71
[3101] Fix | Delete
* @since 4.7.0 `$post` can be a WP_Post object.
[3102] Fix | Delete
* @since 6.8.0 Returns an array of pingback statuses indexed by link.
[3103] Fix | Delete
*
[3104] Fix | Delete
* @param string $content Post content to check for links. If empty will retrieve from post.
[3105] Fix | Delete
* @param int|WP_Post $post Post ID or object.
[3106] Fix | Delete
* @return array<string, bool> An array of pingback statuses indexed by link.
[3107] Fix | Delete
*/
[3108] Fix | Delete
function pingback( $content, $post ) {
[3109] Fix | Delete
require_once ABSPATH . WPINC . '/class-IXR.php';
[3110] Fix | Delete
require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php';
[3111] Fix | Delete
[3112] Fix | Delete
// Original code by Mort (http://mort.mine.nu:8080).
[3113] Fix | Delete
$post_links = array();
[3114] Fix | Delete
[3115] Fix | Delete
$post = get_post( $post );
[3116] Fix | Delete
[3117] Fix | Delete
if ( ! $post ) {
[3118] Fix | Delete
return array();
[3119] Fix | Delete
}
[3120] Fix | Delete
[3121] Fix | Delete
$pung = get_pung( $post );
[3122] Fix | Delete
[3123] Fix | Delete
if ( empty( $content ) ) {
[3124] Fix | Delete
$content = $post->post_content;
[3125] Fix | Delete
}
[3126] Fix | Delete
[3127] Fix | Delete
/*
[3128] Fix | Delete
* Step 1.
[3129] Fix | Delete
* Parsing the post, external links (if any) are stored in the $post_links array.
[3130] Fix | Delete
*/
[3131] Fix | Delete
$post_links_temp = wp_extract_urls( $content );
[3132] Fix | Delete
[3133] Fix | Delete
$ping_status = array();
[3134] Fix | Delete
/*
[3135] Fix | Delete
* Step 2.
[3136] Fix | Delete
* Walking through the links array.
[3137] Fix | Delete
* First we get rid of links pointing to sites, not to specific files.
[3138] Fix | Delete
* Example:
[3139] Fix | Delete
* http://dummy-weblog.org
[3140] Fix | Delete
* http://dummy-weblog.org/
[3141] Fix | Delete
* http://dummy-weblog.org/post.php
[3142] Fix | Delete
* We don't wanna ping first and second types, even if they have a valid <link/>.
[3143] Fix | Delete
*/
[3144] Fix | Delete
foreach ( (array) $post_links_temp as $link_test ) {
[3145] Fix | Delete
// If we haven't pung it already and it isn't a link to itself.
[3146] Fix | Delete
if ( ! in_array( $link_test, $pung, true ) && ( url_to_postid( $link_test ) !== $post->ID )
[3147] Fix | Delete
// Also, let's never ping local attachments.
[3148] Fix | Delete
&& ! is_local_attachment( $link_test )
[3149] Fix | Delete
) {
[3150] Fix | Delete
$test = parse_url( $link_test );
[3151] Fix | Delete
if ( $test ) {
[3152] Fix | Delete
if ( isset( $test['query'] ) ) {
[3153] Fix | Delete
$post_links[] = $link_test;
[3154] Fix | Delete
} elseif ( isset( $test['path'] ) && ( '/' !== $test['path'] ) && ( '' !== $test['path'] ) ) {
[3155] Fix | Delete
$post_links[] = $link_test;
[3156] Fix | Delete
}
[3157] Fix | Delete
}
[3158] Fix | Delete
}
[3159] Fix | Delete
}
[3160] Fix | Delete
[3161] Fix | Delete
$post_links = array_unique( $post_links );
[3162] Fix | Delete
[3163] Fix | Delete
/**
[3164] Fix | Delete
* Fires just before pinging back links found in a post.
[3165] Fix | Delete
*
[3166] Fix | Delete
* @since 2.0.0
[3167] Fix | Delete
*
[3168] Fix | Delete
* @param string[] $post_links Array of link URLs to be checked (passed by reference).
[3169] Fix | Delete
* @param string[] $pung Array of link URLs already pinged (passed by reference).
[3170] Fix | Delete
* @param int $post_id The post ID.
[3171] Fix | Delete
*/
[3172] Fix | Delete
do_action_ref_array( 'pre_ping', array( &$post_links, &$pung, $post->ID ) );
[3173] Fix | Delete
[3174] Fix | Delete
foreach ( (array) $post_links as $pagelinkedto ) {
[3175] Fix | Delete
$pingback_server_url = discover_pingback_server_uri( $pagelinkedto );
[3176] Fix | Delete
[3177] Fix | Delete
if ( $pingback_server_url ) {
[3178] Fix | Delete
// Allow an additional 60 seconds for each pingback to complete.
[3179] Fix | Delete
if ( function_exists( 'set_time_limit' ) ) {
[3180] Fix | Delete
set_time_limit( 60 );
[3181] Fix | Delete
}
[3182] Fix | Delete
[3183] Fix | Delete
// Now, the RPC call.
[3184] Fix | Delete
$pagelinkedfrom = get_permalink( $post );
[3185] Fix | Delete
[3186] Fix | Delete
// Using a timeout of 3 seconds should be enough to cover slow servers.
[3187] Fix | Delete
$client = new WP_HTTP_IXR_Client( $pingback_server_url );
[3188] Fix | Delete
$client->timeout = 3;
[3189] Fix | Delete
/**
[3190] Fix | Delete
* Filters the user agent sent when pinging-back a URL.
[3191] Fix | Delete
*
[3192] Fix | Delete
* @since 2.9.0
[3193] Fix | Delete
*
[3194] Fix | Delete
* @param string $concat_useragent The user agent concatenated with ' -- WordPress/'
[3195] Fix | Delete
* and the WordPress version.
[3196] Fix | Delete
* @param string $useragent The useragent.
[3197] Fix | Delete
* @param string $pingback_server_url The server URL being linked to.
[3198] Fix | Delete
* @param string $pagelinkedto URL of page linked to.
[3199] Fix | Delete
* @param string $pagelinkedfrom URL of page linked from.
[3200] Fix | Delete
*/
[3201] Fix | Delete
$client->useragent = apply_filters( 'pingback_useragent', $client->useragent . ' -- WordPress/' . get_bloginfo( 'version' ), $client->useragent, $pingback_server_url, $pagelinkedto, $pagelinkedfrom );
[3202] Fix | Delete
// When set to true, this outputs debug messages by itself.
[3203] Fix | Delete
$client->debug = false;
[3204] Fix | Delete
[3205] Fix | Delete
$status = $client->query( 'pingback.ping', $pagelinkedfrom, $pagelinkedto );
[3206] Fix | Delete
[3207] Fix | Delete
if ( $status // Ping registered.
[3208] Fix | Delete
|| ( isset( $client->error->code ) && 48 === $client->error->code ) // Already registered.
[3209] Fix | Delete
) {
[3210] Fix | Delete
add_ping( $post, $pagelinkedto );
[3211] Fix | Delete
}
[3212] Fix | Delete
$ping_status[ $pagelinkedto ] = $status;
[3213] Fix | Delete
}
[3214] Fix | Delete
}
[3215] Fix | Delete
[3216] Fix | Delete
return $ping_status;
[3217] Fix | Delete
}
[3218] Fix | Delete
[3219] Fix | Delete
/**
[3220] Fix | Delete
* Checks whether blog is public before returning sites.
[3221] Fix | Delete
*
[3222] Fix | Delete
* @since 2.1.0
[3223] Fix | Delete
*
[3224] Fix | Delete
* @param mixed $sites Will return if blog is public, will not return if not public.
[3225] Fix | Delete
* @return mixed Empty string if blog is not public, returns $sites, if site is public.
[3226] Fix | Delete
*/
[3227] Fix | Delete
function privacy_ping_filter( $sites ) {
[3228] Fix | Delete
if ( '0' !== get_option( 'blog_public' ) ) {
[3229] Fix | Delete
return $sites;
[3230] Fix | Delete
} else {
[3231] Fix | Delete
return '';
[3232] Fix | Delete
}
[3233] Fix | Delete
}
[3234] Fix | Delete
[3235] Fix | Delete
/**
[3236] Fix | Delete
* Sends a Trackback.
[3237] Fix | Delete
*
[3238] Fix | Delete
* Updates database when sending trackback to prevent duplicates.
[3239] Fix | Delete
*
[3240] Fix | Delete
* @since 0.71
[3241] Fix | Delete
*
[3242] Fix | Delete
* @global wpdb $wpdb WordPress database abstraction object.
[3243] Fix | Delete
*
[3244] Fix | Delete
* @param string $trackback_url URL to send trackbacks.
[3245] Fix | Delete
* @param string $title Title of post.
[3246] Fix | Delete
* @param string $excerpt Excerpt of post.
[3247] Fix | Delete
* @param int $post_id Post ID.
[3248] Fix | Delete
* @return int|false|void Database query from update.
[3249] Fix | Delete
*/
[3250] Fix | Delete
function trackback( $trackback_url, $title, $excerpt, $post_id ) {
[3251] Fix | Delete
global $wpdb;
[3252] Fix | Delete
[3253] Fix | Delete
if ( empty( $trackback_url ) ) {
[3254] Fix | Delete
return;
[3255] Fix | Delete
}
[3256] Fix | Delete
[3257] Fix | Delete
$options = array();
[3258] Fix | Delete
$options['timeout'] = 10;
[3259] Fix | Delete
$options['body'] = array(
[3260] Fix | Delete
'title' => $title,
[3261] Fix | Delete
'url' => get_permalink( $post_id ),
[3262] Fix | Delete
'blog_name' => get_option( 'blogname' ),
[3263] Fix | Delete
'excerpt' => $excerpt,
[3264] Fix | Delete
);
[3265] Fix | Delete
[3266] Fix | Delete
$response = wp_safe_remote_post( $trackback_url, $options );
[3267] Fix | Delete
[3268] Fix | Delete
if ( is_wp_error( $response ) ) {
[3269] Fix | Delete
return;
[3270] Fix | Delete
}
[3271] Fix | Delete
[3272] Fix | Delete
$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET pinged = CONCAT(pinged, '\n', %s) WHERE ID = %d", $trackback_url, $post_id ) );
[3273] Fix | Delete
return $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, '')) WHERE ID = %d", $trackback_url, $post_id ) );
[3274] Fix | Delete
}
[3275] Fix | Delete
[3276] Fix | Delete
/**
[3277] Fix | Delete
* Sends a pingback.
[3278] Fix | Delete
*
[3279] Fix | Delete
* @since 1.2.0
[3280] Fix | Delete
*
[3281] Fix | Delete
* @param string $server Host of blog to connect to.
[3282] Fix | Delete
* @param string $path Path to send the ping.
[3283] Fix | Delete
*/
[3284] Fix | Delete
function weblog_ping( $server = '', $path = '' ) {
[3285] Fix | Delete
require_once ABSPATH . WPINC . '/class-IXR.php';
[3286] Fix | Delete
require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php';
[3287] Fix | Delete
[3288] Fix | Delete
// Using a timeout of 3 seconds should be enough to cover slow servers.
[3289] Fix | Delete
$client = new WP_HTTP_IXR_Client( $server, ( ( ! strlen( trim( $path ) ) || ( '/' === $path ) ) ? false : $path ) );
[3290] Fix | Delete
$client->timeout = 3;
[3291] Fix | Delete
$client->useragent .= ' -- WordPress/' . get_bloginfo( 'version' );
[3292] Fix | Delete
[3293] Fix | Delete
// When set to true, this outputs debug messages by itself.
[3294] Fix | Delete
$client->debug = false;
[3295] Fix | Delete
$home = trailingslashit( home_url() );
[3296] Fix | Delete
if ( ! $client->query( 'weblogUpdates.extendedPing', get_option( 'blogname' ), $home, get_bloginfo( 'rss2_url' ) ) ) { // Then try a normal ping.
[3297] Fix | Delete
$client->query( 'weblogUpdates.ping', get_option( 'blogname' ), $home );
[3298] Fix | Delete
}
[3299] Fix | Delete
}
[3300] Fix | Delete
[3301] Fix | Delete
/**
[3302] Fix | Delete
* Default filter attached to pingback_ping_source_uri to validate the pingback's Source URI.
[3303] Fix | Delete
*
[3304] Fix | Delete
* @since 3.5.1
[3305] Fix | Delete
*
[3306] Fix | Delete
* @see wp_http_validate_url()
[3307] Fix | Delete
*
[3308] Fix | Delete
* @param string $source_uri
[3309] Fix | Delete
* @return string
[3310] Fix | Delete
*/
[3311] Fix | Delete
function pingback_ping_source_uri( $source_uri ) {
[3312] Fix | Delete
return (string) wp_http_validate_url( $source_uri );
[3313] Fix | Delete
}
[3314] Fix | Delete
[3315] Fix | Delete
/**
[3316] Fix | Delete
* Default filter attached to xmlrpc_pingback_error.
[3317] Fix | Delete
*
[3318] Fix | Delete
* Returns a generic pingback error code unless the error code is 48,
[3319] Fix | Delete
* which reports that the pingback is already registered.
[3320] Fix | Delete
*
[3321] Fix | Delete
* @since 3.5.1
[3322] Fix | Delete
*
[3323] Fix | Delete
* @link https://www.hixie.ch/specs/pingback/pingback#TOC3
[3324] Fix | Delete
*
[3325] Fix | Delete
* @param IXR_Error $ixr_error
[3326] Fix | Delete
* @return IXR_Error
[3327] Fix | Delete
*/
[3328] Fix | Delete
function xmlrpc_pingback_error( $ixr_error ) {
[3329] Fix | Delete
if ( 48 === $ixr_error->code ) {
[3330] Fix | Delete
return $ixr_error;
[3331] Fix | Delete
}
[3332] Fix | Delete
return new IXR_Error( 0, '' );
[3333] Fix | Delete
}
[3334] Fix | Delete
[3335] Fix | Delete
//
[3336] Fix | Delete
// Cache.
[3337] Fix | Delete
//
[3338] Fix | Delete
[3339] Fix | Delete
/**
[3340] Fix | Delete
* Removes a comment from the object cache.
[3341] Fix | Delete
*
[3342] Fix | Delete
* @since 2.3.0
[3343] Fix | Delete
*
[3344] Fix | Delete
* @param int|array $ids Comment ID or an array of comment IDs to remove from cache.
[3345] Fix | Delete
*/
[3346] Fix | Delete
function clean_comment_cache( $ids ) {
[3347] Fix | Delete
$comment_ids = (array) $ids;
[3348] Fix | Delete
wp_cache_delete_multiple( $comment_ids, 'comment' );
[3349] Fix | Delete
foreach ( $comment_ids as $id ) {
[3350] Fix | Delete
/**
[3351] Fix | Delete
* Fires immediately after a comment has been removed from the object cache.
[3352] Fix | Delete
*
[3353] Fix | Delete
* @since 4.5.0
[3354] Fix | Delete
*
[3355] Fix | Delete
* @param int $id Comment ID.
[3356] Fix | Delete
*/
[3357] Fix | Delete
do_action( 'clean_comment_cache', $id );
[3358] Fix | Delete
}
[3359] Fix | Delete
[3360] Fix | Delete
wp_cache_set_comments_last_changed();
[3361] Fix | Delete
}
[3362] Fix | Delete
[3363] Fix | Delete
/**
[3364] Fix | Delete
* Updates the comment cache of given comments.
[3365] Fix | Delete
*
[3366] Fix | Delete
* Will add the comments in $comments to the cache. If comment ID already exists
[3367] Fix | Delete
* in the comment cache then it will not be updated. The comment is added to the
[3368] Fix | Delete
* cache using the comment group with the key using the ID of the comments.
[3369] Fix | Delete
*
[3370] Fix | Delete
* @since 2.3.0
[3371] Fix | Delete
* @since 4.4.0 Introduced the `$update_meta_cache` parameter.
[3372] Fix | Delete
*
[3373] Fix | Delete
* @param WP_Comment[] $comments Array of comment objects
[3374] Fix | Delete
* @param bool $update_meta_cache Whether to update commentmeta cache. Default true.
[3375] Fix | Delete
*/
[3376] Fix | Delete
function update_comment_cache( $comments, $update_meta_cache = true ) {
[3377] Fix | Delete
$data = array();
[3378] Fix | Delete
foreach ( (array) $comments as $comment ) {
[3379] Fix | Delete
$data[ $comment->comment_ID ] = $comment;
[3380] Fix | Delete
}
[3381] Fix | Delete
wp_cache_add_multiple( $data, 'comment' );
[3382] Fix | Delete
[3383] Fix | Delete
if ( $update_meta_cache ) {
[3384] Fix | Delete
// Avoid `wp_list_pluck()` in case `$comments` is passed by reference.
[3385] Fix | Delete
$comment_ids = array();
[3386] Fix | Delete
foreach ( $comments as $comment ) {
[3387] Fix | Delete
$comment_ids[] = $comment->comment_ID;
[3388] Fix | Delete
}
[3389] Fix | Delete
update_meta_cache( 'comment', $comment_ids );
[3390] Fix | Delete
}
[3391] Fix | Delete
}
[3392] Fix | Delete
[3393] Fix | Delete
/**
[3394] Fix | Delete
* Adds any comments from the given IDs to the cache that do not already exist in cache.
[3395] Fix | Delete
*
[3396] Fix | Delete
* @since 4.4.0
[3397] Fix | Delete
* @since 6.1.0 This function is no longer marked as "private".
[3398] Fix | Delete
* @since 6.3.0 Use wp_lazyload_comment_meta() for lazy-loading of comment meta.
[3399] Fix | Delete
*
[3400] Fix | Delete
* @see update_comment_cache()
[3401] Fix | Delete
* @global wpdb $wpdb WordPress database abstraction object.
[3402] Fix | Delete
*
[3403] Fix | Delete
* @param int[] $comment_ids Array of comment IDs.
[3404] Fix | Delete
* @param bool $update_meta_cache Optional. Whether to update the meta cache. Default true.
[3405] Fix | Delete
*/
[3406] Fix | Delete
function _prime_comment_caches( $comment_ids, $update_meta_cache = true ) {
[3407] Fix | Delete
global $wpdb;
[3408] Fix | Delete
[3409] Fix | Delete
$non_cached_ids = _get_non_cached_ids( $comment_ids, 'comment' );
[3410] Fix | Delete
if ( ! empty( $non_cached_ids ) ) {
[3411] Fix | Delete
$fresh_comments = $wpdb->get_results( sprintf( "SELECT $wpdb->comments.* FROM $wpdb->comments WHERE comment_ID IN (%s)", implode( ',', array_map( 'intval', $non_cached_ids ) ) ) );
[3412] Fix | Delete
[3413] Fix | Delete
update_comment_cache( $fresh_comments, false );
[3414] Fix | Delete
}
[3415] Fix | Delete
[3416] Fix | Delete
if ( $update_meta_cache ) {
[3417] Fix | Delete
wp_lazyload_comment_meta( $comment_ids );
[3418] Fix | Delete
}
[3419] Fix | Delete
}
[3420] Fix | Delete
[3421] Fix | Delete
//
[3422] Fix | Delete
// Internal.
[3423] Fix | Delete
//
[3424] Fix | Delete
[3425] Fix | Delete
/**
[3426] Fix | Delete
* Closes comments on old posts on the fly, without any extra DB queries. Hooked to the_posts.
[3427] Fix | Delete
*
[3428] Fix | Delete
* @since 2.7.0
[3429] Fix | Delete
* @access private
[3430] Fix | Delete
*
[3431] Fix | Delete
* @param WP_Post $posts Post data object.
[3432] Fix | Delete
* @param WP_Query $query Query object.
[3433] Fix | Delete
* @return array
[3434] Fix | Delete
*/
[3435] Fix | Delete
function _close_comments_for_old_posts( $posts, $query ) {
[3436] Fix | Delete
if ( empty( $posts ) || ! $query->is_singular() || ! get_option( 'close_comments_for_old_posts' ) ) {
[3437] Fix | Delete
return $posts;
[3438] Fix | Delete
}
[3439] Fix | Delete
[3440] Fix | Delete
/**
[3441] Fix | Delete
* Filters the list of post types to automatically close comments for.
[3442] Fix | Delete
*
[3443] Fix | Delete
* @since 3.2.0
[3444] Fix | Delete
*
[3445] Fix | Delete
* @param string[] $post_types An array of post type names.
[3446] Fix | Delete
*/
[3447] Fix | Delete
$post_types = apply_filters( 'close_comments_for_post_types', array( 'post' ) );
[3448] Fix | Delete
if ( ! in_array( $posts[0]->post_type, $post_types, true ) ) {
[3449] Fix | Delete
return $posts;
[3450] Fix | Delete
}
[3451] Fix | Delete
[3452] Fix | Delete
$days_old = (int) get_option( 'close_comments_days_old' );
[3453] Fix | Delete
if ( ! $days_old ) {
[3454] Fix | Delete
return $posts;
[3455] Fix | Delete
}
[3456] Fix | Delete
[3457] Fix | Delete
if ( time() - strtotime( $posts[0]->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) ) {
[3458] Fix | Delete
$posts[0]->comment_status = 'closed';
[3459] Fix | Delete
$posts[0]->ping_status = 'closed';
[3460] Fix | Delete
}
[3461] Fix | Delete
[3462] Fix | Delete
return $posts;
[3463] Fix | Delete
}
[3464] Fix | Delete
[3465] Fix | Delete
/**
[3466] Fix | Delete
* Closes comments on an old post. Hooked to comments_open and pings_open.
[3467] Fix | Delete
*
[3468] Fix | Delete
* @since 2.7.0
[3469] Fix | Delete
* @access private
[3470] Fix | Delete
*
[3471] Fix | Delete
* @param bool $open Comments open or closed.
[3472] Fix | Delete
* @param int $post_id Post ID.
[3473] Fix | Delete
* @return bool $open
[3474] Fix | Delete
*/
[3475] Fix | Delete
function _close_comments_for_old_post( $open, $post_id ) {
[3476] Fix | Delete
if ( ! $open ) {
[3477] Fix | Delete
return $open;
[3478] Fix | Delete
}
[3479] Fix | Delete
[3480] Fix | Delete
if ( ! get_option( 'close_comments_for_old_posts' ) ) {
[3481] Fix | Delete
return $open;
[3482] Fix | Delete
}
[3483] Fix | Delete
[3484] Fix | Delete
$days_old = (int) get_option( 'close_comments_days_old' );
[3485] Fix | Delete
if ( ! $days_old ) {
[3486] Fix | Delete
return $open;
[3487] Fix | Delete
}
[3488] Fix | Delete
[3489] Fix | Delete
$post = get_post( $post_id );
[3490] Fix | Delete
[3491] Fix | Delete
/** This filter is documented in wp-includes/comment.php */
[3492] Fix | Delete
$post_types = apply_filters( 'close_comments_for_post_types', array( 'post' ) );
[3493] Fix | Delete
if ( ! in_array( $post->post_type, $post_types, true ) ) {
[3494] Fix | Delete
return $open;
[3495] Fix | Delete
}
[3496] Fix | Delete
[3497] Fix | Delete
// Undated drafts should not show up as comments closed.
[3498] Fix | Delete
if ( '0000-00-00 00:00:00' === $post->post_date_gmt ) {
[3499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function