Make WordPress Core


Ignore:
Timestamp:
10/21/2016 05:59:34 AM (10 years ago)
Author:
pento
Message:

Pings: Allow ping functions to accept WP_Post objects as well as post IDs.

This removes the use of several global $wpdb instances, as well as bringing the ping functions into line with other post-related functions, which will accept a post ID or WP_Post object.

Props dshanke.
Fixes #38202.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/comment.php

    r38783 r38852  
    24062406 *
    24072407 * @since 1.5.0
     2408 * @since 4.7.0 $post_id can be a WP_Post object.
    24082409 *
    24092410 * @global wpdb $wpdb WordPress database abstraction object.
    24102411 *
    2411  * @param int $post_id Post ID to do trackbacks on.
    2412  */
    2413 function do_trackbacks($post_id) {
     2412 * @param int|WP_Post $post_id Post object or ID to do trackbacks on.
     2413 */
     2414function do_trackbacks( $post_id ) {
    24142415        global $wpdb;
    2415 
    24162416        $post = get_post( $post_id );
    2417         $to_ping = get_to_ping($post_id);
    2418         $pinged  = get_pung($post_id);
    2419         if ( empty($to_ping) ) {
    2420                 $wpdb->update($wpdb->posts, array('to_ping' => ''), array('ID' => $post_id) );
     2417        if ( ! $post ) {
     2418                return false;
     2419        }
     2420
     2421        $to_ping = get_to_ping( $post );
     2422        $pinged  = get_pung( $post );
     2423        if ( empty( $to_ping ) ) {
     2424                $wpdb->update($wpdb->posts, array( 'to_ping' => '' ), array( 'ID' => $post->ID ) );
    24212425                return;
    24222426        }
     
    24412445                        $tb_ping = trim($tb_ping);
    24422446                        if ( !in_array($tb_ping, $pinged) ) {
    2443                                 trackback($tb_ping, $post_title, $excerpt, $post_id);
     2447                                trackback( $tb_ping, $post_title, $excerpt, $post->ID );
    24442448                                $pinged[] = $tb_ping;
    24452449                        } else {
    2446                                 $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s, '')) WHERE ID = %d", $tb_ping, $post_id) );
     2450                                $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, %s,
     2451                                        '')) WHERE ID = %d", $tb_ping, $post->ID ) );
    24472452                        }
    24482453                }
     
    24752480 *
    24762481 * @since 0.71
    2477  *
    2478  * @param string $content Post content to check for links.
    2479  * @param int $post_ID Post ID.
    2480  */
    2481 function pingback($content, $post_ID) {
     2482 * @since 4.7.0 $post_id can be a WP_Post object.
     2483 *
     2484 * @param string $content Post content to check for links. If empty will retrieve from post.
     2485 * @param int|WP_Post $post_id Post Object or ID.
     2486 */
     2487function pingback( $content, $post_id ) {
    24822488        include_once( ABSPATH . WPINC . '/class-IXR.php' );
    24832489        include_once( ABSPATH . WPINC . '/class-wp-http-ixr-client.php' );
     
    24862492        $post_links = array();
    24872493
    2488         $pung = get_pung($post_ID);
     2494        $post = get_post( $post_id );
     2495        if ( ! $post ) {
     2496                return;
     2497        }
     2498
     2499        $pung = get_pung( $post );
     2500
     2501        if ( empty( $content ) ) {
     2502                $content = $post->post_content;
     2503        }
    24892504
    24902505        // Step 1
     
    25022517
    25032518        foreach ( (array) $post_links_temp as $link_test ) :
    2504                 if ( !in_array($link_test, $pung) && (url_to_postid($link_test) != $post_ID) // If we haven't pung it already and it isn't a link to itself
     2519                if ( ! in_array( $link_test, $pung ) && ( url_to_postid( $link_test ) != $post->ID ) // If we haven't pung it already and it isn't a link to itself
    25052520                                && !is_local_attachment($link_test) ) : // Also, let's never ping local attachments.
    25062521                        if ( $test = @parse_url($link_test) ) {
     
    25232538         * @param int   $post_ID     The post ID.
    25242539         */
    2525         do_action_ref_array( 'pre_ping', array( &$post_links, &$pung, $post_ID ) );
     2540        do_action_ref_array( 'pre_ping', array( &$post_links, &$pung, $post->ID ) );
    25262541
    25272542        foreach ( (array) $post_links as $pagelinkedto ) {
     
    25312546                        @ set_time_limit( 60 );
    25322547                        // Now, the RPC call
    2533                         $pagelinkedfrom = get_permalink($post_ID);
     2548                        $pagelinkedfrom = get_permalink( $post );
    25342549
    25352550                        // using a timeout of 3 seconds should be enough to cover slow servers
     
    25532568
    25542569                        if ( $client->query('pingback.ping', $pagelinkedfrom, $pagelinkedto) || ( isset($client->error->code) && 48 == $client->error->code ) ) // Already registered
    2555                                 add_ping( $post_ID, $pagelinkedto );
     2570                                add_ping( $post, $pagelinkedto );
    25562571                }
    25572572        }
Note: See TracChangeset for help on using the changeset viewer.