web-dev-qa-db-ja.com

パーマリンク(きれいなURL)から投稿IDを取得する方法は?

パーマリンク(きれいなURL)から投稿IDを取得する方法は?

36
Jeaf Gilbert

Rewrite.phpにあるurl_to_postid() [ ドキュメントを参照 ]で問題ないはずです。私は昨年、私のプラグインでそれを使用しました。

51
kovshenin

これ は、通常の投稿タイプとカスタム投稿タイプで機能します。 rl_to_postid() は通常の投稿でのみ機能します。

9
deweydb

私はそのための専用の(文書化された)機能を持っています:

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

パスを指定してページを取得します。

どこ $page_path

[...]「index.php?pagename = parent-page/sub-page」のような「pagename」クエリに相当します。

関数リファレンス/パスでページを取得 を参照してください

例:

// 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');
9
mems

url_to_postid()現在3.7.0:この関数はカスタムの投稿タイプをサポートするようになりました(Tracチケット#19744#25659)。

2
jovaniwayne

あなたもこれを試すことができます:

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

catは探しているものです=パーマリンク。動物はカスタムポストタイプです。

0
jovaniwayne

私はマルチサイトを持っていますWPいくつかのブログで何らかの理由でブログを通過するとurl_to_postid()は機能しますが、他のブログでは同じタイプの投稿でget_page_by_path()は魅​​力のように機能するので、この方法で作成しましたが、完璧ではないかもしれません。

$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

使ってください

  $postid = url_to_postid( $url );

添付ファイルのIDを取得します。

提供されるURLはexample.com/?attachment_id=Nの形式である必要があり、完全なURLからIDを取得するために完全なURLで機能しないことが必要です。