it-swarm.com.de

Wie bekomme ich eine Post ID von Permalink (hübsche URL)?

Wie bekomme ich eine Post ID von Permalink (hübsche URL)?

35
Jeaf Gilbert

Sie sollten mit url_to_postid() [ siehe Dokumentation ] in rewrite.php zufrieden sein. Ich habe es letztes Jahr in einem Plugin von mir verwendet, das wie ein Zauber wirkt.

50
kovshenin

Dies funktioniert für reguläre Posttypen UND benutzerdefinierte Posttypen. url_to_postid () funktioniert nur bei regulären Beiträgen.

9
deweydb

Ich habe dafür eine dedizierte (und dokumentierte) Funktion:

get_page_by_path( $page_path, $output, $post_type );

Ruft eine Seite mit ihrem Pfad ab.

Wo $page_path ist

[...] das Äquivalent der Abfrage 'Seitenname' wie in: 'index.php? Seitenname = übergeordnete Seite/Unterseite'.

Siehe Funktionsreferenz/Seite nach Pfad abrufen

Beispiel:

// Assume 'my_permalink' is a post.
// But all types are supported: post, page, attachment, custom post type, etc.
// See http://codex.wordpress.org/Post_Types
get_page_by_path('my_permalink', OBJECT, 'post');
8
mems

url_to_postid() ab 3.7.0: Diese Funktion unterstützt jetzt benutzerdefinierte Posttypen (siehe Trac-Tickets #19744, #25659).

1
jovaniwayne

sie können dieses auch probieren:

$post = get_page_by_path('cat',OBJECT,'animal'); 

katze ist die, nach der Sie suchen = der Permalink; Tier ist der benutzerdefinierte Posttyp,

0
jovaniwayne

Ich habe eine Multisite WP also wenn ich aus bestimmten Gründen in einigen Blogs durch die Blogs gehe, funktioniert url_to_postid() in anderen Blogs auf dem Post des gleichen Typs nicht while get_page_by_path() funktioniert wie Charm. Also habe ich es so gemacht, was allerdings nicht perfekt sein kann:

$parsed_url = wp_parse_url( $url ); // Parse URL
$slug = substr($parsed_url['path'], 1 ); // Trim slash in the beginning

$post_id = url_to_postid( $slug ); // Attempt to get post ID

if ( ! $post_id ) { // If it didn't work try to get it manually from DB
    $post_query_result = 
        $wpdb->get_row("SELECT ID FROM {$wpdb->prefix}posts WHERE post_name = '{$slug}'");
    $analog_id = (int) $post_query_result->ID;
}
0
khandaniel

benutzen Sie bitte 

  $postid = url_to_postid( $url );

um die ID eines Anhangs abzurufen.

Es ist erforderlich, dass die bereitgestellte URL im Format example.com/?attachment_id=N angegeben ist und nicht mit der vollständigen URL zusammenarbeitet, um die ID von der vollständigen URL abzurufen.