Как создать собственный плагин для интеграции с текущей темой - PullRequest
0 голосов
/ 23 октября 2019

Я разрабатываю плагин с CPT и шаблоном CPT. Я хотел бы, чтобы шаблон мог интегрироваться в любую тему, с которой он используется. Я думал о вызове хука 'the_content' из моего шаблона, но я понятия не имею, как это сделать, поскольку все, что я могу найти, это вызвать его из файла functions.php. Подскажите, пожалуйста, как мне это кодировать в файле шаблона CPT (например, single-CPT.php) или, возможно, я движусь в неправильном направлении, поэтому, пожалуйста, перенаправьте меня. Спасибо!

1 Ответ

0 голосов
/ 23 октября 2019

РЕДАКТИРОВАТЬ:

Если вы хотите добавить контент только в функцию the_content, вы можете сделать что-то вроде этого:

add_filter('the_content', "test_the_content");
function test_the_content($content){
    if(is_singular('test')){
        $content = $content.test_additional_content();
    }
    return $content;
}
function test_additional_content(){
    ob_start(); ?>
    <div class="test">
        Here what you want to display after the_content
    </div>
    <?php
    return ob_get_clean();

}

ОРИГИНАЛЬНЫЙ ОТВЕТ

Если я понял ваш вопросправильно, вот как определить шаблоны вашего пользовательского типа сообщения в вашем плагине. Таким образом, также будет возможно перезаписать шаблон плагина из темы.

Пример ниже для CPT, называемого «test», поэтому вы должны адаптировать код в соответствии с именем вашего CPT.

add_filter('template_include', 'my_plugin_templates');
function my_plugin_templates($template) {
  $post_types = array('test');

  if (is_post_type_archive($post_types) && !file_exists(get_stylesheet_directory() . '/archive-test.php')) {
    $template = plugin_dir_path( __FILE__ ) . 'archive-test.php';
  }

  if (is_singular($post_types) && !file_exists(get_stylesheet_directory() . '/single-test.php')) {
    $template = plugin_dir_path(__FILE__) . 'single-test.php';
  }
  return $template;
}

Вы также можете посмотреть этот репо: https://github.com/zecka/cpt-in-plugin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...