discover_pingback_server_uri() - WordPress 函数参考中文文档

返回介绍

discover_pingback_server_uri()

发布于 2017-09-10 字数4096 浏览 908 评论 0

discover_pingback_server_uri( string $url,  int $deprecated = '' )

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.


参数

$url

(string)
(Required)
URL to ping.

$deprecated

(int)
(Optional)
Not Used.

Default value: ”


返回值

(false|string) False on failure, string containing URI on success.


源代码

File: wp-includes/comment.php

function discover_pingback_server_uri( $url, $deprecated = '' ) {
	if ( !empty( $deprecated ) )
		_deprecated_argument( __FUNCTION__, '2.7.0' );

	$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 a URL. This should never happen.
		return false;

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

	$response = wp_safe_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 it's not a binary file)
	$response = wp_safe_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 > 0 ) { // We got it!
			return $pingback_server_url;
		}
	}

	return false;
}

更新日志

Version 描述
1.5.0 Introduced.

相关函数

Uses

  • wp-includes/functions.php:
    wp_get_upload_dir()
  • wp-includes/functions.php:
    _deprecated_argument()
  • wp-includes/http.php:
    wp_safe_remote_head()
  • wp-includes/http.php:
    wp_remote_retrieve_header()
  • wp-includes/http.php:
    wp_safe_remote_get()
  • wp-includes/http.php:
    wp_remote_retrieve_body()
  • wp-includes/load.php:
    is_wp_error()
  • Show 2 more uses
    Hide more uses


Used By

  • wp-includes/comment.php:
    pingback()

User Contributed Notes

上一篇:disabled()

下一篇:dismissed_updates()

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!