- set_transient( 'doing_cron', $local_time );
-
- $cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron';
- wp_remote_post( $cron_url, array('timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters('https_local_ssl_verify', true)) );
+ // Set the cron lock with the current unix timestamp, when the cron is being spawned.
+ $doing_wp_cron = sprintf( '%.22F', $gmt_time );
+ set_transient( 'doing_cron', $doing_wp_cron );
+
+ /**
+ * Filter the cron request arguments.
+ *
+ * @since 3.5.0
+ *
+ * @param array $cron_request_array {
+ * An array of cron request URL arguments.
+ *
+ * @type string $url The cron request URL.
+ * @type int $key The 22 digit GMT microtime.
+ * @type array $args {
+ * An array of cron request arguments.
+ *
+ * @type int $timeout The request timeout in seconds. Default .01 seconds.
+ * @type bool $blocking Whether to set blocking for the request. Default false.
+ * @type bool $sslverify Whether SSL should be verified for the request. Default false.
+ * }
+ * }
+ */
+ $cron_request = apply_filters( 'cron_request', array(
+ 'url' => add_query_arg( 'doing_wp_cron', $doing_wp_cron, site_url( 'wp-cron.php' ) ),
+ 'key' => $doing_wp_cron,
+ 'args' => array(
+ 'timeout' => 0.01,
+ 'blocking' => false,
+ /** This filter is documented in wp-includes/class-wp-http-streams.php */
+ 'sslverify' => apply_filters( 'https_local_ssl_verify', false )
+ )
+ ) );
+
+ wp_remote_post( $cron_request['url'], $cron_request['args'] );