Gdy tworzę nowy post, zaraz po kliknięciu „Dodaj nowy” , gdy edytor postów pokazuje, zamiast korzystać z menu rozwijanego i wybierać niestandardowe pole do użycia, chciałbym mieć pewne domyślne pola niestandardowe otwarty koniec.
Wizualnie zamiast:
Chciałbym mieć coś takiego:
Wiem, że istnieją do tego wtyczki (CPT, więcej pól itp.), Ale chciałbym w prosty sposób to zrobić za pomocą podstawowej funkcji.
Próbowałem czegoś takiego (używam niestandardowego typu postu „produkt”):
function register_custom_fields( $post_ID ) {
global $wpdb;
if( !wp_is_post_revision( $post_ID ) ) {
add_post_meta( $post_ID, 'reference', '', true);
add_post_meta( $post_ID, 'price', '', true);
}
}
add_action('edit_product', 'register_custom_fields');
Ale to nie działa. Myślę, że haczyk jest prawdopodobnie nieprawidłowy (ponieważ edit_post
pojawia się po aktualizacji), ale nie widzę żadnego haka dla „nowego postu” (zaraz po kliknięciu przez użytkownika „nowego postu” przez administratora wp). Czy jest jakiś ?
A może cały pomysł jest zły i istnieje inny sposób?
źródło
To jest właściwa metoda dodawania obsługi pól niestandardowych (nie otrzymujesz pustych pól podczas edycji postów)
źródło
Powinieneś użyć akcji save_post i odizolować swoją operację, sprawdzając typ postu, ponieważ działa on na wszystkich typach postów. Jest oczywiście pewna logika, którą trzeba będzie w to wbudować, aby działała dla ciebie. Prawdopodobnie powinieneś ustawić pole meta post, które sprawdza, czy ustawiłeś wartości domyślne jeden raz, aby użytkownicy nie byli sfrustrowani, jeśli chcieliby pozostawić pole meta post puste.
Jeśli chcesz, aby wartości domyślne były zerowe (jak widać w przykładzie kodu), nie twórz funkcji, ponieważ powoduje to jedynie dodanie narzutu i pola meta po nie są domyślnie zapełniane wartościami.
źródło
Chcę mieć unikalny meta opis dla każdego niestandardowego postu w witrynie WP, którą opracowuję. Więc szukałem też domyślnego niestandardowego pola i wylądowałem tutaj.
Wiem, że to dość stary post, ale pomyślałem, że opublikuję prostą odpowiedź, którą znalazłem na stronie mariokostelac.com .
kg to moja przestrzeń nazw, możesz nazwać funkcję, co chcesz. Jestem całkiem nowy w hakach i dostosowywaniu WP w ogóle, ale wierzę, że wp_insert_post to hak, którego szukasz.
źródło
get_post_type()
. Ponadto, podczas luźnego porównywania, powinieneś użyć składni warunków w stylu YODA.get_post_type($post_id)
lepszy niż$_GET['post_type']
?'page' === $_GET['post_type']
. W przeciwnym razie, gdy zapomnisz jednego,=
możesz skończyć w sytuacji, w której przypisujesz wartość zamiast porównywać dwie wartości. I to skończy jako śmieci w bazie danych. Możesz także użyć===
bezpiecznego porównywania typów (jest to wartośćpage
? I jest to wartość typustring
?)'page' === get_post_type($post_id)
?jeśli ktoś potrzebuje wziąć niestandardowe pole według typu postu, zostawiam kod poniżej tego, co zrobiłem i działa dobrze dla mnie :)
} add_action ('wp_insert_post', 'awh_field_type');
źródło