Próbuję uzyskać tytuł posta typu posta (post / strona / portfolio) w panelu administracyjnym poza pętla.

Prawie wypróbowałem wszystkie możliwe rozwiązania, ale bez powodzenia:

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

Komentarze

  • Tylko się upewniam;) Jeśli metoda 1 zwróci " błąd niebędący przedmiotem ", zwykle oznacza to, że może ' nie znajdź posta.
  • Metody 2 i 3 na pewno nie będą działać. Jeśli ' upewnij się, że Twój identyfikator posta to 3208, wtedy metoda 1, 4 powinna działać.
  • W przypadku metody 1 var_dump ($ content_post); exit; po $ content_post i sprawdź post get lub nie. Jeśli wynik ma wartość NULL, sprawdź wyjścia ID posta, czy nie.

Odpowiedź

Jeśli masz tylko identyfikator posta i chcesz mieć tylko tytuł tego posta, a następnie użyj .

Składnia tej funkcji:

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

Kod, który rozwiąże Twój problem, wygląda następująco:

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

A adresowanie fragmentów kodu … Pierwsza metoda powinna działać, jeśli post istnieje i jest opublikowany lub aktualny użytkownik może go zobaczyć.

Druga metoda nie działa. To nie ma sensu.

Trzecia i czwarta metoda również nie działają. Te funkcje nie przyjmują post_ID jako parametru, więc takie ich użycie nie ma większego sensu …

Odpowiedź

Jak już wspomniano, „błąd niebędący przedmiotem” oznacza, że funkcja get_post () nic nie zwróciła, a post nie istnieje .

Jeśli jednak jesteś pewien, że ten post istnieje, oto alternatywna metoda wzięta z kodeksu

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

Jeśli znowu nic nie zostanie zwrócone, czy na pewno ten post został opublikowany i nie ma statusu wersji roboczej?

Komentarze

  • Czy nie byłoby bardziej wydajne użycie metody get_post_field?
  • @KrzysiekDr ó żdż get_post_field () używa get_post (), więc ' nie ma różnicy w wydajności po stronie pobierania

Odpowiedź

Otrzymałem odpowiedni tytuł posta za pomocą fol niższy proces. po pierwsze: dostaję informacje o identyfikatorze postu z pulpitu nawigacyjnego [najedź kursorem na post i obserwuj w lewym dolnym rogu pulpitu (znajdziesz tam informacje o identyfikatorze)]

Po drugie: wewnątrz pętli wordpress, której użyłem:

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

tutaj wartość-id-post to liczba całkowita będąca identyfikatorem Twojego posta. Możesz przechowywać wartość get_the_title () w zmiennej i funkcji echo, wyświetl wartość w żądanej lokalizacji. Uwaga * musisz mieć co najmniej jeden post w panelu WordPress. W przeciwnym razie możesz otrzymać nieoczekiwane wyniki (przeglądarka może się zawiesić nawet komputer)

Odpowiedź

używając tej domyślnej metody WP, możesz uzyskać tytuł bieżącej strony i aktualnego posta.

<?php echo get_the_title(); 

Komentarze

  • Autor wskazał już, że próbował użyć get_the_title(). Ponadto, ponieważ potrzebują go poza pętlą, jest brak aktualnego posta .

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *