Страница Wordpress для использования template.php из каталога плагинов - PullRequest
0 голосов
/ 21 февраля 2019

Первый раз создавая плагин для Wordpress.

Я программно добавляю страницу на свой сайт, как в моем плагине:

$page_check = get_page_by_title( $page_path );
$page = array(
    'post_type' => 'page',
    'post_title' => $page_title,
    'post_content' => $page_content,
    'post_status' => 'publish',
    'post_author' => $author->ID,
    'post_slug' => $page_path
);

if (!isset($page_check->ID) && !get_page_by_path($page_path)) {
    $page_id = wp_insert_post($page);
}

Я хочу использовать эту конкретную страницушаблон страницы campaigns.php, который у меня есть в папке подключаемых модулей (/wp-content/my-plugin/campaigns.php)

Я понимаю, что могу обновить метаданные этой страницы следующим образом:

update_metadata( 'page',  $page_id, '_wp_page_template', 'your_custom_template' );

Как указать your_custom_template кусок к моему campaings.php?Можно ли это сделать?Спасибо.

ОБНОВЛЕНИЕ:

С помощью ниже я понимаю, что это должно работать:

// $template resolves correctly to the full path to the `php` file
$template = $settings->plugin_path . 'campaigns.php'; 
update_post_meta($page_id, '_wp_page_template', $template);

Путь / файл плагина:

$template = '/home/vagrant/src/wptest/wp-content/plugins/pm/campaigns.php';

Ностраница, при входе в экран редактирования, по-прежнему указывает на шаблон по умолчанию.Выбор шаблона вручную не имеет значения для страницы.Что я пропустил?

Это мой основной campaigns.php:

<?php
/**
 * Template Name: Campaigns
 *
 * @package PM
 */
?>

    <div id="primary" class="content-area">
        <main id="main" class="site-main">
            <section class="outer-categories">
                <div class="container-fluid">
                    <div class="row text-justify">
                        <div class="col-lg-12">
                            <?php
                            while ( have_posts() ) :
                                the_post();

                                get_template_part( 'template-parts/content', 'page' );

                            endwhile; // End of the loop.
                            ?>
                        </div>

                    </div>
                </div>
            </section>
        </main><!-- #main -->
    </div><!-- #primary -->

<?php

1 Ответ

0 голосов
/ 21 февраля 2019

См. theme_page_templates

   function wpmodify_add_page_template ($templates) {
        $templates['my-custom-template.php'] = 'My Template';
        return $templates;
        }

    add_filter ('theme_page_templates', 'wpmodify_add_page_template');

Теперь установите путь к плагину для шаблона - См. page_template

function wpmodify_redirect_page_template ($template) {
    if ('my-custom-template.php' == basename ($template))
        $template = WP_PLUGIN_DIR . '/mypluginname/my-custom-template.php';
    return $template;
    }
add_filter ('page_template', 'wpmodify_redirect_page_template');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...