it-swarm.com.de

Wie erhalte ich eine Beitrags- (Seiten- oder CPT-) ID aus einem Titel oder einem Slug?

Ich habe den Codex durchsucht, get_page_by_title () nicht zum Laufen gebracht und bin ziemlich überrascht, dass es für diese Aufgabe keine Standardfunktion WP zu geben scheint.

Ich muss die ID eines Postings/einer Cpt oder einer Seite mit dem Slug des Posting-/Seitentitels ermitteln. Idealerweise suche ich folgendes:

get_post_ID_by_title('My post title', 'customposttype');

Was soll ich machen

6
jnthnclrk

sie können diese Funktion verwenden, die von Google springt "Beitrag nach Titel"

/**
* Retrieve a post given its title.
*
* @uses $wpdb
*
* @param string $post_title Page title
* @param string $post_type post type ('post','page','any custom type')
* @param string $output Optional. Output type. OBJECT, ARRAY_N, or ARRAY_A.
* @return mixed
*/
function get_post_by_title($page_title, $post_type ='post' , $output = OBJECT) {
    global $wpdb;
        $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type= %s", $page_title, $post_type));
        if ( $post )
            return get_post($post, $output);

    return null;
}
12
Bainternet

Ihnen fehlt ein Funktionsparameter. Wenn Sie für den zweiten optionalen Parameter $ output eine Null eingeben, sollte diese Funktion für Sie funktionieren.

get_page_by_title('My post title', null, 'customposttype');

Ich bin auf dasselbe Problem gestoßen und habe es durch Hinzufügen der Null für mich behoben.

3
Dave Konopka

Ich neige dazu, direkte DB-Abfragen zu scheuen. Stattdessen verwende ich das Objekt WP_Query, um Dinge für mich zu analysieren.

Dies ist im Grunde eine Funktion, die ich in einem meiner Themen verwende, um einen Beitrag zu erhalten, der auf einem bestimmten Slug basiert:

function get_post_id( $slug, $post_type ) {
    $query = new WP_Query(
        array(
            'name' => $slug,
            'post_type' => $post_type
        )
    );

    $query->the_post();

    return get_the_ID();
}

Dadurch wird eine Abfrage mit der WP-API erstellt, um einen Beitrag eines bestimmten Typs mit einem bestimmten Slug abzurufen, die regulären Schleifenfunktionen für das Ergebnis auszuführen und die ID des Beitrags zurückzugeben. Sie können es auch verwenden, um den gesamten Beitrag zurückzugeben, indem Sie die Funktion ein wenig ändern, aber das liegt bei Ihnen.

2
EAMann

Dies ist jetzt ein paar Jahre alt, aber es erscheint immer noch, wenn Sie bei Google danach suchen. Also, hier ist eine einfache Möglichkeit, dies zu tun:

$page = get_page_by_title( 'my post title' );

oder

$page = get_post_ID_by_title('my post title', OBJECT, 'customposttype');

Verwenden Sie dann einfach das $ page-Objekt, um die ID zu ermitteln:

$page->ID
0
Phill Healey

Derzeit (WP> 4.9.2) findest du deinen "beliebigen" Beitrag/Seite usw. nach Titel/Slug folgendermaßen:

$page = get_posts(
    array(
        //'name'      => 'your-post-slug', // by post slug
        'title'      => 'Your post title', // by post title
        'post_type' => 'page' // post type of your preference
    )
);

if ($page = $page[0]) // First/lowest ID taken if many objects
{
    // Then you do whatever is needed...
    // $id = $page->id;
    // $content = $page->post_content;
    // or $content = apply_filters('the_content', $page->post_content);
    // etc.
}
0