Jeg prøver å få posttittelen på en posttype (innlegg / side / portefølje) i adminpanelet utenfor loop.

Jeg prøvde nesten alle mulige løsninger, men uten hell:

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

Kommentarer

  • Bare pass på;) Hvis Metode 1 returnerer en " ikke-objektfeil ", betyr det normalt at han kan ' t finn innlegget.
  • Metode 2 og 3 vil ikke fungere definitivt. Hvis du ' er sikker på at innleggs-ID-en din er 3208, så skal metode 1, 4 fungere.
  • For metode 1 var_dump ($ content_post); avslutt; etter $ content_post og sjekk innlegg få eller ikke. Hvis utdata er NULL, så sjekk post-ID ut eller ikke.

Svar

Hvis du bare har ID av et innlegg, og du vil bare ha tittelen på det innlegget, og bruk deretter vil jeg være den beste måten å gjøre dette på.

Syntaksen til denne funksjonen:

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

Så kode, som løser problemet ditt, ser slik ut:

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

Og adressering av kodebitene … Den første metoden skal fungere, hvis innlegget eksisterer og det er publisert eller nåværende bruker kan se det.

Andre metode kan ikke fungere. Det gir ingen mening.

Tredje og fjerde metode kan ikke fungere også. Disse funksjonene tar ikke post_ID som param, så slik bruk av dem gir ikke mye mening …

Svar

Som allerede påpekt, betyr «ikke-objektfeilen» get_post () returnerte ingenting, og at innlegget ikke eksisterer .

Hvis du imidlertid er sikker på at dette innlegget eksisterer, er her en alternativ metode hentet fra codex

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

Hvis ingenting igjen returneres, er du sikker på at dette innlegget er publisert og ikke er i utkast-status?

Kommentarer

  • Ville det ikke være mer effektivt å bruke get_post_field?
  • @KrzysiekDr ó żdż get_post_field () bruker get_post (), så ' er ingen forskjell i ytelse på hentingsiden

Svar

Jeg fikk den aktuelle tittelen på innlegget ved hjelp av fol nedgangsprosess. først: Jeg får informasjon om innlegg-ID fra dashbordet [svev over innlegget og se nederst til venstre på dashbordet (du vil få ID-informasjon der)]

For det andre: inne i wordpress-sløyfen brukte jeg:

<?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; ?> 

her er post-id-verdi hele verdien som er innlegget ditt. Du kan lagre get_the_title () -verdien i en variabel og ekkofunksjon til ekko ut verdien på ønsket sted. Merk * du må ha minst ett innlegg i wordpress-dashbordet. Ellers kan du få uventede resultater (nettleseren, til og med datamaskinen kan krasje)

Svar

ved hjelp av disse standard WP-metodene kan du få tittelen på gjeldende side og nåværende innlegg.

<?php echo get_the_title(); 

Kommentarer

  • Forfatteren påpekte allerede at de prøvde å bruke get_the_title(). Siden de trenger det utenfor løkken, er det ingen nåværende innlegg .

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *