Ik probeer de titel van een post_type (post / pagina / portfolio) in het admin-paneel buiten de lus.
Ik heb bijna alle mogelijke oplossingen geprobeerd, maar zonder succes:
//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)
Reacties
- Voor de zekerheid;) Als Methode 1 een " niet-objectfout " retourneert, betekent dit normaal gesproken dat hij ' vind het bericht niet.
- Methode 2 en 3 zullen niet zeker werken. Als je ' er zeker van bent dat je post-ID is
3208
, dan zou methode 1, 4 moeten werken. - Voor methode 1 var_dump ($ content_post); exit; na $ content_post en vink post get of aan niet. Als de output NULL is, controleer dan post ID exits of niet.
Answer
Als je alleen ID hebt van een bericht en je wilt alleen de titel van dat bericht, gebruik dan is de beste manier om dit te doen, denk ik.
De syntaxis van deze functie:
get_post_field( $field, $post_id, $context );
Dus code, die je probleem zal oplossen, ziet er als volgt uit:
$title = get_post_field( "post_title", $POST_ID ); // most probably you want to display the title, so you can ignore last param
En het aanpakken van je codefragmenten … De eerste methode zou moeten werken, als de bericht bestaat en het is gepubliceerd of de huidige gebruiker kan het zien.
De tweede methode werkt niet. Het slaat nergens op.
Derde en vierde methoden kunnen ook “niet werken. Deze functies nemen post_ID niet als param, dus een dergelijk gebruik ervan heeft niet veel zin …
Antwoord
Zoals al is opgemerkt, betekent de “niet-objectfout” dat get_post () niets heeft geretourneerd en dat het bericht niet bestaat .
Als je er echter zeker van bent dat dit bericht bestaat, is hier een alternatieve methode die uit de codex
wordt gehaald
<?php $post_7 = get_post(7, ARRAY_A); $title = $post_7["post_title"]; ?>
Als, nogmaals, er niets wordt geretourneerd, weet je dan zeker dat dit bericht is gepubliceerd en niet de status Concept heeft?
Reacties
- Zou het niet efficiënter zijn om get_post_field te gebruiken?
- @KrzysiekDr ó żdż get_post_field () gebruikt get_post (), dus er ' s geen verschil in prestatie aan de ophaalkant
Antwoord
Ik heb de relevante titel van het bericht gekregen met fol proces. ten eerste: ik krijg informatie over de post-id van het dashboard [beweeg over de post en kijk links onderaan het dashboard (je krijgt daar id-informatie)]
Ten tweede: binnen wordpress-lus die ik gebruikte:
<?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; ?>
hier is post-id-waarde de gehele waarde die de id van je bericht is. Je kunt de get_the_title () waarde opslaan in een variabele en echo-functie om echo de waarde op uw gewenste locatie. Opmerking * u moet ten minste één bericht in uw WordPress-dashboard hebben. Anders kunt u onverwachte resultaten krijgen (zelfs de browser kan crashen).
Antwoord
met deze standaard WP-methode kun je de titel van de huidige pagina en het huidige bericht krijgen.
<?php echo get_the_title();
Opmerkingen
- De auteur heeft er al op gewezen dat ze hebben geprobeerd
get_the_title()
te gebruiken. Omdat ze het ook buiten de lus nodig hebben, is er geen huidig bericht .