web-dev-qa-db-fra.com

Comment obtenir un identifiant de publication (page ou CPT) d'un titre ou d'une limace?

J'ai parcouru le Codex, je n'ai pas réussi à obtenir get_page_by_title () et je suis assez surpris qu'il ne semble pas exister de fonction standard WP pour cette tâche.

J'ai besoin d'obtenir l'ID d'un article/cpt ou d'une page donnés en utilisant soit le slug du titre de l'article/de la page. Idéalement, je recherche les éléments suivants:

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

Que devrais-je faire?

6
jnthnclrk

vous pouvez utiliser cette fonction qui saute par google "get post by title"

/**
* 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

Il vous manque un paramètre de fonction. Lance une valeur null pour le deuxième paramètre optionnel $ output et cette fonction devrait fonctionner pour vous.

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

Je viens de rencontrer le même problème et l'ajout de la valeur null le corrige pour moi.

3
Dave Konopka

J'ai tendance à éviter les requêtes directes à la base de données. Au lieu de cela, j'utilise l'objet WP_Query pour analyser les choses pour moi.

C’est, en gros, une fonction que j’utilise dans l’un de mes thèmes pour obtenir un article basé sur un slug donné:

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();
}

Cela créera une requête à l'aide de l'API WP pour récupérer une publication d'un type spécifique avec un slug donné, exécutera les fonctions de boucle standard sur le résultat et renverra l'ID de la publication. Vous pouvez également l'utiliser pour renvoyer l'intégralité du message en modifiant un peu la fonction, mais cela dépend de vous.

2
EAMann

Cela fait quelques années maintenant, mais il apparaît toujours lorsque vous effectuez une recherche sur Google. Alors, voici un moyen simple de le faire:

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

ou

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

Ensuite, utilisez simplement l’objet $ page pour récupérer l’ID:

$page->ID
0
Phill Healey

Actuellement (WP> 4.9.2), vous trouverez votre "tout" article/page donné (s), etc., par titre/slug de cette façon:

$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
Krzysztof Przygoda