Switch language

wpseek.com
A WordPress-centric search engine for devs and theme authors




discover_pingback_server_uri [ WordPress Function ]

discover_pingback_server_uri ( $url, $deprecated = '' )
Parameters:
  • (string) $url URL to ping.
  • (int) $deprecated Not Used.
Returns:
  • (bool|string) False on failure, string containing URI on success.
Defined at:

Benzer Fonksiyonlar: is_server_error


Finds a pingback server URI based on the given URL.

Checks the HTML for the rel="pingback" link and x-pingback headers. It does a check for the x-pingback headers first and returns that, if available. The check for the rel="pingback" has more overhead than just the header.

Source


<?php
function discover_pingback_server_uri$url$deprecated '' ) {
    if ( !empty( 
$deprecated ) )
        
_deprecated_argument__FUNCTION__'2.7' );

    
$pingback_str_dquote 'rel="pingback"';
    
$pingback_str_squote 'rel=\'pingback\'';

    
/** @todo Should use Filter Extension or custom preg_match instead. */
    
$parsed_url parse_url($url);

    if ( ! isset( 
$parsed_url['host'] ) ) // Not an URL. This should never happen.
        
return false;

    
//Do not search for a pingback server on our own uploads
    
$uploads_dir wp_upload_dir();
    if ( 
=== strpos($url$uploads_dir['baseurl']) )
        return 
false;

    
$response wp_remote_head$url, array( 'timeout' => 2'httpversion' => '1.0' ) );

    if ( 
is_wp_error$response ) )
        return 
false;

    if ( 
wp_remote_retrieve_header$response'x-pingback' ) )
        return 
wp_remote_retrieve_header$response'x-pingback' );

    
// Not an (x)html, sgml, or xml page, no use going further.
    
if ( preg_match('#(image|audio|video|model)/#is'wp_remote_retrieve_header$response'content-type' )) )
        return 
false;

    
// Now do a GET since we're going to look in the html headers (and we're sure its not a binary file)
    
$response wp_remote_get$url, array( 'timeout' => 2'httpversion' => '1.0' ) );

    if ( 
is_wp_error$response ) )
        return 
false;

    
$contents wp_remote_retrieve_body$response );

    
$pingback_link_offset_dquote strpos($contents$pingback_str_dquote);
    
$pingback_link_offset_squote strpos($contents$pingback_str_squote);
    if ( 
$pingback_link_offset_dquote || $pingback_link_offset_squote ) {
        
$quote = ($pingback_link_offset_dquote) ? '"' '\'';
        
$pingback_link_offset = ($quote=='"') ? $pingback_link_offset_dquote $pingback_link_offset_squote;
        
$pingback_href_pos = @strpos($contents'href='$pingback_link_offset);
        
$pingback_href_start $pingback_href_pos+6;
        
$pingback_href_end = @strpos($contents$quote$pingback_href_start);
        
$pingback_server_url_len $pingback_href_end $pingback_href_start;
        
$pingback_server_url substr($contents$pingback_href_start$pingback_server_url_len);

        
// We may find rel="pingback" but an incomplete pingback URL
        
if ( $pingback_server_url_len ) { // We got it!
            
return $pingback_server_url;
        }
    }

    return 
false;
}
?>

Examples [ wp-snippets.com ]

Google Arama Sonuçlarý

Dahasý ...

Kullanýcý Tartýþmalarý [ wordpress.org ]

- Bulunamadý -

Yeni bir konu yaz ...

0 User Note(s)

Henüz yok. Ýlk sen ol!

Yeni Ekle ...



HTML5 Powered with CSS3 / Styling, Performance & Integration, and Semantics