Intereting Posts

Проверьте часть шаблона, иначе фильтруйте контент

В плагине, который приносит свой собственный тип сообщения в таблицу, я хочу обрабатывать post_meta , фильтруя the_content – если только пользователь не предоставил свой собственный шаблон single-{post-type}.php .

Должен ли я запускать это внутри the_content ? Или в другом месте?

 if ( file_exists( get_stylesheet_directory() . '/single-event.php' ) ) { include( get_stylesheet_directory() . '/single-event.php' ); } elseif ( file_exists( get_template_directory() . '/single-event.php' ) ) { include( get_template_directory() . '/single-event.php' ); } else { // filter time } 

Если это не в моем add_filter('the_content', 'event_filter_function', 10); то я думаю, мне интересно, как еще я буду знать во время выполнения, существует ли этот файл.

Так дорого вычислить дорогостоящий запуск этого фильтра и просто вернуть $ content без изменений, если имеется шаблон? Или есть лучший способ?

Здесь есть два фрагмента кода, которые довольно понятны:

Добавьте шаблон из плагина, если из темы нет

 add_filter( 'page_template', 'wpse110317_append_meta' ); function wpse110317_append_meta( $template ) { is_singular() AND ! file_exists( get_template_directory()."/{$template}" ) AND $template = plugin_dir_path( __FILE__ )."/{$template}"; return $template; } 

Добавляйте что-то в контент до тех пор, пока в теме не будет шаблона

 add_filter( 'page_template', 'wpse110317_maybe_add_filter' ); function wpse110317_maybe_add_filter( $template ) { is_singular() AND ! file_exists( get_template_directory()."/{$template}" ) AND add_action( 'the_content', 'wpse110317_append_meta' ); return $template; } function wpse110317_append_meta( $content ) { // do stuff return $content; }