Jessaie dobtenir le titre de larticle dun article_type (article / page / portfolio) dans le panneau dadministration en dehors de la boucle.

Jai presque essayé toutes les solutions possibles, mais sans succès:

//method 1 $content_post = get_post(3208); $_menu_item_title = $content_post->post_title; //(Trying to get property of non-object error) //method 2 $obj = get_post_type_object($_menu_item_type); $content_post = get_post(3208); //(Trying to get property of non-object error) $_menu_item_title = $obj->$content_post->post_title; //method 3 $_menu_item_title = the_title(3208); //(no error but nothing is store) //method 4 $_menu_item_title = get_the_title(3208); //(no error but nothing is store) 

Commentaires

  • Juste en sassurant;) Si la méthode 1 renvoie une " erreur non-objet ", cela signifie normalement quil peut ' Je ne trouve pas le message.
  • Les méthodes 2 et 3 ne fonctionneront certainement pas. Si vous ' êtes sûr que votre ID de publication est 3208 alors la méthode 1, 4 devrait fonctionner.
  • Pour la méthode 1 var_dump ($ content_post); exit; après $ content_post et vérifiez post get ou non. Si la sortie est NULL, vérifiez si lidentifiant de publication sort ou non.

Réponse

Si vous navez que lidentifiant dun message et vous voulez uniquement le titre de ce message, puis en utilisant sera le meilleur moyen de le faire, je suppose.

La syntaxe de cette fonction:

get_post_field( $field, $post_id, $context ); 

Donc, le code qui résoudra votre problème ressemble à ceci:

$title = get_post_field( "post_title", $POST_ID ); // most probably you want to display the title, so you can ignore last param 

Et en adressant vos extraits de code … La première méthode devrait fonctionner, si le le message existe et il est publié ou lutilisateur actuel peut le voir.

La deuxième méthode ne peut pas fonctionner. Cela na aucun sens.

Les troisième et quatrième méthodes ne peuvent pas fonctionner également. Ces fonctions ne prennent pas post_ID comme paramètre, donc leur utilisation na pas beaucoup de sens …

Réponse

Comme déjà souligné, l « erreur non-objet » signifie que get_post () na rien retourné, et que le message nexiste pas .

Si vous êtes certain, cependant, que ce message existe, voici une méthode alternative tirée du codex

<?php $post_7 = get_post(7, ARRAY_A); $title = $post_7["post_title"]; ?> 

Si, encore une fois, rien nest retourné, êtes-vous certain que ce message a été publié et nest pas à létat Brouillon?

Commentaires

  • Ne serait-il pas plus efficace dutiliser get_post_field?
  • @KrzysiekDr ó żdż get_post_field () utilise get_post (), donc il ny a ' aucune différence de performances du côté de la récupération

Réponse

Jai obtenu le titre pertinent du message en utilisant fol processus de descente. premièrement: jobtiens des informations sur lID de larticle à partir du tableau de bord [passez la souris sur larticle et regardez en bas à gauche du tableau de bord (vous y obtiendrez des informations did)]

Deuxièmement: la boucle wordpress intérieure que jai utilisée:

<?php if(have_posts()): while(have_posts()) : $var_name= get_the_ID(); ?> <?php if($var_name == post-id-value): get_the_title(); ?> <?php endwhile; endif; ?> 

ici post-id-value est la valeur entière qui est lidentifiant de votre message. Vous pouvez stocker la valeur get_the_title () dans une variable et une fonction décho pour renvoyer la valeur à lemplacement souhaité. Remarque * vous devez avoir au moins un message dans votre tableau de bord wordpress. Sinon, vous risquez dobtenir des résultats inattendus (le navigateur même lordinateur peut planter)

Réponse

en utilisant ces méthodes WP par défaut, vous pouvez obtenir le titre de la page actuelle et de larticle actuel.

<?php echo get_the_title(); 

Commentaires

  • Lauteur a déjà indiqué avoir essayé dutiliser get_the_title(). De plus, comme ils en ont besoin en dehors de la boucle, il y a aucun message actuel .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *