Chciałbym zaoferować mój niestandardowy typ postu jako wtyczkę, aby ludzie mogli go używać bez dotykania folderu motywu. Ale niestandardowe szablony typów postów - takie jak single-movies.php - znajdują się w folderze motywów. Czy istnieje sposób, aby WP sprawdził, czy w folderze wtyczki jest plik single-movies.php? Podłączanie funkcji do hierarchii filtrów ? Lub get_template_directory (); ?
plugins
custom-post-types
themes
directory
nathanbweb
źródło
źródło
get_query_template()
funkcję. Jest to zmienny haczyk, więc pierwsza część{$type}_template
zmienia się w zależności od parametru przekazanego do tej funkcji. Zobacz wp-include / template.php, aby zapoznać się z niektórymi typowymiadd_filter( 'single-movies_template', 'my_custom_template' );
jak w połączonym samouczku. (To pytanie jest zamknięte na nowe odpowiedzi, więc nie mogę go dodać samodzielnie).PLUGIN_PATH
zplugin_dir_path( __FILE__ )
czym usunąć pierwszy ukośnik z nazwy pliku. Pełna ścieżka wyglądałabyreturn plugin_dir_path( __FILE__ ) . 'Custom_File.php';
Zaktualizowana odpowiedź
Czystsza i krótsza wersja.
Stara odpowiedź
Dodano sprawdzanie niestandardowego szablonu określonego typu posta w folderze motywu do odpowiedzi @Brainternet.
Teraz możesz pozwolić użytkownikom wtyczki skopiować szablon z wtyczki do ich motywu, aby go zastąpić.
W tym przykładzie szablony muszą znajdować się w katalogu głównym wtyczki i kompozycji.
źródło
locate_template
zamiast dla mnieget_stylesheet_directory
brzmi jak opcja czyszczenia (znajduje się tutaj: code.tutsplus.com/tutorials/... ).Chciałbym zauważyć, że kiedy używasz do tego metody filtrowania, niezwykle ważne jest nadanie priorytetu filtrowi w ten sposób:
Jeśli tego nie zrobisz, czasami WP spróbuje ponownie sprawdzić po tym filtrze. Z tego powodu wyciągałam włosy przez jakieś 2 godziny.
źródło
Jest o wiele lepszy sposób, aby to zrobić, którego używam do swoich wtyczek.
Użyj
template_include
haka filtra, aby załadować powyżej kodu.źródło
dzięki tej stronie udało mi się rozwiązać to samo pytanie.
Dla porównania skończyłem z:
hak filtrujący {$ type} _template nie działał dla mnie
źródło
Powyżej jest świetną odpowiedzią, ale sprawdzenie $ single var pozwala szablonowi zastąpić szablon, jeśli jest on dostarczony przez motyw / motyw potomny.
źródło