📄 functions.php
字号:
$http_request .= 'Content-Length: '.strlen($query_string)."\r\n";
$http_request .= "User-Agent: WordPress/" . $wp_version;
$http_request .= "\r\n\r\n";
$http_request .= $query_string;
if ( '' == $trackback_url['port'] )
$trackback_url['port'] = 80;
$fs = @fsockopen($trackback_url['host'], $trackback_url['port'], $errno, $errstr, 4);
@fputs($fs, $http_request);
/*
$debug_file = 'trackback.log';
$fp = fopen($debug_file, 'a');
fwrite($fp, "\n*****\nRequest:\n\n$http_request\n\nResponse:\n\n");
while(!@feof($fs)) {
fwrite($fp, @fgets($fs, 4096));
}
fwrite($fp, "\n\n");
fclose($fp);
*/
@fclose($fs);
$tb_url = addslashes( $tb_url );
$wpdb->query("UPDATE $wpdb->posts SET pinged = CONCAT(pinged, '\n', '$tb_url') WHERE ID = '$ID'");
return $wpdb->query("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_url', '')) WHERE ID = '$ID'");
}
function make_url_footnote($content) {
preg_match_all('/<a(.+?)href=\"(.+?)\"(.*?)>(.+?)<\/a>/', $content, $matches);
$j = 0;
for ($i=0; $i<count($matches[0]); $i++) {
$links_summary = (!$j) ? "\n" : $links_summary;
$j++;
$link_match = $matches[0][$i];
$link_number = '['.($i+1).']';
$link_url = $matches[2][$i];
$link_text = $matches[4][$i];
$content = str_replace($link_match, $link_text.' '.$link_number, $content);
$link_url = ((strtolower(substr($link_url,0,7)) != 'http://') && (strtolower(substr($link_url,0,8)) != 'https://')) ? get_settings('home') . $link_url : $link_url;
$links_summary .= "\n".$link_number.' '.$link_url;
}
$content = strip_tags($content);
$content .= $links_summary;
return $content;
}
function xmlrpc_getposttitle($content) {
global $post_default_title;
if ( preg_match('/<title>(.+?)<\/title>/is', $content, $matchtitle) ) {
$post_title = $matchtitle[0];
$post_title = preg_replace('/<title>/si', '', $post_title);
$post_title = preg_replace('/<\/title>/si', '', $post_title);
} else {
$post_title = $post_default_title;
}
return $post_title;
}
function xmlrpc_getpostcategory($content) {
global $post_default_category;
if ( preg_match('/<category>(.+?)<\/category>/is', $content, $matchcat) ) {
$post_category = trim($matchcat[1], ',');
$post_category = explode(',', $post_category);
} else {
$post_category = $post_default_category;
}
return $post_category;
}
function xmlrpc_removepostdata($content) {
$content = preg_replace('/<title>(.+?)<\/title>/si', '', $content);
$content = preg_replace('/<category>(.+?)<\/category>/si', '', $content);
$content = trim($content);
return $content;
}
function debug_fopen($filename, $mode) {
global $debug;
if ( $debug == 1 ) {
$fp = fopen($filename, $mode);
return $fp;
} else {
return false;
}
}
function debug_fwrite($fp, $string) {
global $debug;
if ( $debug == 1 ) {
fwrite($fp, $string);
}
}
function debug_fclose($fp) {
global $debug;
if ( $debug == 1 ) {
fclose($fp);
}
}
function spawn_pinger() {
global $wpdb, $wp_version;
$doping = false;
if ( $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE TRIM(to_ping) != '' LIMIT 1") )
$doping = true;
if ( $wpdb->get_var("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_pingme' OR meta_key = '_encloseme' LIMIT 1") )
$doping = true;
if ( substr(php_sapi_name(), 0, 3) == 'cgi' )
return $doping;
if ( $doping ) {
$ping_url = get_settings('siteurl') .'/wp-admin/execute-pings.php';
$parts = parse_url($ping_url);
$argyle = @ fsockopen($parts['host'], $_SERVER['SERVER_PORT'], $errno, $errstr, 0.01);
if ( $argyle )
fputs($argyle, "GET {$parts['path']}?time=".time()." HTTP/1.0\r\nHost: {$_SERVER['HTTP_HOST']}\r\nUser-Agent: WordPress/{$wp_version}\r\n\r\n");
}
}
function do_enclose( $content, $post_ID ) {
global $wp_version, $wpdb;
include_once (ABSPATH . WPINC . '/class-IXR.php');
$log = debug_fopen(ABSPATH . '/enclosures.log', 'a');
$post_links = array();
debug_fwrite($log, 'BEGIN '.date('YmdHis', time())."\n");
$pung = get_enclosed( $post_ID );
$ltrs = '\w';
$gunk = '/#~:.?+=&%@!\-';
$punc = '.:?\-';
$any = $ltrs . $gunk . $punc;
preg_match_all("{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp);
debug_fwrite($log, 'Post contents:');
debug_fwrite($log, $content."\n");
foreach($post_links_temp[0] as $link_test) :
if ( !in_array($link_test, $pung) ) : // If we haven't pung it already
$test = parse_url($link_test);
if ( isset($test['query']) )
$post_links[] = $link_test;
elseif (($test['path'] != '/') && ($test['path'] != ''))
$post_links[] = $link_test;
endif;
endforeach;
foreach ($post_links as $url) :
if ( $url != '' && !$wpdb->get_var("SELECT post_id FROM $wpdb->postmeta WHERE post_id = '$post_ID' AND meta_key = 'enclosure' AND meta_value LIKE ('$url%')") ) {
if ( $headers = wp_get_http_headers( $url) ) {
$len = (int) $headers['content-length'];
$type = $wpdb->escape( $headers['content-type'] );
$allowed_types = array( 'video', 'audio' );
if ( in_array( substr( $type, 0, strpos( $type, "/" ) ), $allowed_types ) ) {
$meta_value = "$url\n$len\n$type\n";
$wpdb->query( "INSERT INTO `$wpdb->postmeta` ( `post_id` , `meta_key` , `meta_value` )
VALUES ( '$post_ID', 'enclosure' , '$meta_value')" );
}
}
}
endforeach;
}
function wp_get_http_headers( $url, $red = 1 ) {
global $wp_version;
@set_time_limit( 60 );
if ( $red > 5 )
return false;
$parts = parse_url( $url );
$file = $parts['path'] . ($parts['query'] ? '?'.$parts['query'] : '');
$host = $parts['host'];
if ( !isset( $parts['port'] ) )
$parts['port'] = 80;
$head = "HEAD $file HTTP/1.1\r\nHOST: $host\r\nUser-Agent: WordPress/" . $wp_version . "\r\n\r\n";
$fp = @fsockopen($host, $parts['port'], $err_num, $err_msg, 3);
if ( !$fp )
return false;
$response = '';
fputs( $fp, $head );
while ( !feof( $fp ) && strpos( $response, "\r\n\r\n" ) == false )
$response .= fgets( $fp, 2048 );
fclose( $fp );
preg_match_all('/(.*?): (.*)\r/', $response, $matches);
$count = count($matches[1]);
for ( $i = 0; $i < $count; $i++) {
$key = strtolower($matches[1][$i]);
$headers["$key"] = $matches[2][$i];
}
preg_match('/.*([0-9]{3}).*/', $response, $return);
$headers['response'] = $return[1]; // HTTP response code eg 204, 200, 404
$code = $headers['response'];
if ( ('302' == $code || '301' == $code) && isset($headers['location']) )
return wp_get_http_headers( $headers['location'], ++$red );
return $headers;
}
// Deprecated. Use the new post loop.
function start_wp() {
global $wp_query, $post;
// Since the old style loop is being used, advance the query iterator here.
$wp_query->next_post();
setup_postdata($post);
}
// Setup global post data.
function setup_postdata($post) {
global $id, $postdata, $authordata, $day, $page, $pages, $multipage, $more, $numpages, $wp_query;
global $pagenow;
$id = $post->ID;
$authordata = get_userdata($post->post_author);
$day = mysql2date('d.m.y', $post->post_date);
$currentmonth = mysql2date('m', $post->post_date);
$numpages = 1;
$page = get_query_var('page');
if ( !$page )
$page = 1;
if ( is_single() || is_page() )
$more = 1;
$content = $post->post_content;
if ( preg_match('/<!--nextpage-->/', $content) ) {
if ( $page > 1 )
$more = 1;
$multipage = 1;
$content = str_replace("\n<!--nextpage-->\n", '<!--nextpage-->', $content);
$content = str_replace("\n<!--nextpage-->", '<!--nextpage-->', $content);
$content = str_replace("<!--nextpage-->\n", '<!--nextpage-->', $content);
$pages = explode('<!--nextpage-->', $content);
$numpages = count($pages);
} else {
$pages[0] = $post->post_content;
$multipage = 0;
}
return true;
}
// Setup global user vars. Used by set_current_user() for back compat.
function setup_userdata($user_id = '') {
global $user_login, $userdata, $user_level, $user_ID, $user_email, $user_url, $user_pass_md5, $user_identity;
if ( '' == $user_id )
$user = wp_get_current_user();
else
$user = new WP_User($user_id);
if ( 0 == $user->ID )
return;
$userdata = $user->data;
$user_login = $user->user_login;
$user_level = $user->user_level;
$user_ID = $user->ID;
$user_email = $user->user_email;
$user_url = $user->user_url;
$user_pass_md5 = md5($user->user_pass);
$user_identity = $user->display_name;
}
function is_new_day() {
global $day, $previousday;
if ( $day != $previousday ) {
return(1);
} else {
return(0);
}
}
// Filters: these are the core of WP's plugin architecture
function merge_filters($tag) {
global $wp_filter;
if ( isset($wp_filter['all']) ) {
foreach ($wp_filter['all'] as $priority => $functions) {
if ( isset($wp_filter[$tag][$priority]) )
$wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], $wp_filter[$tag][$priority]);
else
$wp_filter[$tag][$priority] = array_merge($wp_filter['all'][$priority], array());
$wp_filter[$tag][$priority] = array_unique($wp_filter[$tag][$priority]);
}
}
if ( isset($wp_filter[$tag]) )
ksort( $wp_filter[$tag] );
}
function apply_filters($tag, $string) {
global $wp_filter;
$args = array_slice(func_get_args(), 2);
merge_filters($tag);
if ( !isset($wp_filter[$tag]) ) {
return $string;
}
foreach ($wp_filter[$tag] as $priority => $functions) {
if ( !is_null($functions) ) {
foreach($functions as $function) {
$all_args = array_merge(array($string), $args);
$function_name = $function['function'];
$accepted_args = $function['accepted_args'];
if ( $accepted_args == 1 )
$the_args = array($string);
elseif ( $accepted_args > 1 )
$the_args = array_slice($all_args, 0, $accepted_args);
elseif ( $accepted_args == 0 )
$the_args = NULL;
else
$the_args = $all_args;
$string = call_user_func_array($function_name, $the_args);
}
}
}
return $string;
}
function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
global $wp_filter;
// check that we don't already have the same filter at the same priority
if ( isset($wp_filter[$tag]["$priority"]) ) {
foreach($wp_filter[$tag]["$priority"] as $filter) {
// uncomment if we want to match function AND accepted_args
// if ( $filter == array($function, $accepted_args) ) {
if ( $filter['function'] == $function_to_add ) {
return true;
}
}
}
// So the format is wp_filter['tag']['array of priorities']['array of ['array (functions, accepted_args)]']
$wp_filter[$tag]["$priority"][] = array('function'=>$function_to_add, 'accepted_args'=>$accepted_args);
return true;
}
function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
global $wp_filter;
// rebuild the list of filters
if ( isset($wp_filter[$tag]["$priority"]) ) {
$new_function_list = array();
foreach($wp_filter[$tag]["$priority"] as $filter) {
if ( $filter['function'] != $function_to_remove ) {
$new_function_list[] = $filter;
}
}
$wp_filter[$tag]["$priority"] = $new_function_list;
}
return true;
}
// The *_action functions are just aliases for the *_filter functions, they take special strings instead of generic content
function do_action($tag, $arg = '') {
global $wp_filter;
$extra_args = array_slice(func_get_args(), 2);
if ( is_array($arg) )
$args = array_merge($arg, $extra_args);
else
$args = array_merge(array($arg), $extra_args);
merge_filters($tag);
if ( !isset($wp_filter[$tag]) ) {
return;
}
foreach ($wp_filter[$tag] as $priority => $functions) {
if ( !is_null($functions) ) {
foreach($functions as $function) {
$function_name = $function['function'];
$accepted_args = $function['accepted_args'];
if ( $accepted_args == 1 ) {
if ( is_array($arg) )
$the_args = $arg;
else
$the_args = array($arg);
} elseif ( $accepted_args > 1 ) {
$the_args = array_slice($args, 0, $accepted_args);
} elseif ( $accepted_args == 0 ) {
$the_args = NULL;
} else {
$the_args = $args;
}
$string = call_user_func_array($function_name, $the_args);
}
}
}
}
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
add_filter($tag, $function_to_add, $priority, $accepted_args);
}
function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1) {
remove_filter($tag, $function_to_remove, $priority, $accepted_args);
}
function get_page_uri($page_id) {
$page = get_page($page_id);
$uri = urldecode($page->post_name);
// A page cannot be it's own parent.
if ( $page->post_parent == $page->ID )
return $uri;
while ($page->post_parent != 0) {
$page = get_page($page->post_parent);
$uri = urldecode($page->post_name) . "/" . $uri;
}
return $uri;
}
function get_posts($args) {
global $wpdb;
parse_str($args, $r);
if ( !isset($r['numberposts']) )
$r['numberposts'] = 5;
if ( !isset($r['offset']) )
$r['offset'] = 0;
if ( !isset($r['category']) )
$r['category'] = '';
if ( !isset($r['orderby']) )
$r['orderby'] = 'post_date';
if ( !isset($r['order']) )
$r['order'] = 'DESC';
$now = current_time('mysql');
$posts = $wpdb->get_results(
"SELECT DISTINCT * FROM $wpdb->posts " .
( empty( $r['category'] ) ? "" : ", $wpdb->post2cat " ) .
" WHERE post_date <= '$now' AND (post_status = 'publish') ".
( empty( $r['category'] ) ? "" : "AND $wpdb->posts.ID = $wpdb->post2cat.post_id AND $wpdb->post2cat.category_id = " . $r['category']. " " ) .
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -