Wordpress - пользовательский шаблон страницы не будет назначен странице - PullRequest
0 голосов
/ 21 февраля 2019

Первое построение плагина Wordpress.Я создаю страницу и хочу назначить ей шаблон страницы из папки плагинов.Мой код показывает имя шаблона в списке выбора в редакторе страниц, но он не прикреплен к странице.Ни ручное присоединение ничего не делает к странице.Но путь к файлу правильный.

Мой код для создания страницы:

$page_path = "this-is-a-campaign-landing-page";
$page_title = 'This is a Campaigns Page Title';
$page_content = 'THIS IS A CAMPAIGNS PAGE BODY';

$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);

    if ($page_id) {
        $template = '/home/vagrant/src/wptest/wp-content/plugins/pm/campaign_page.php';

        update_post_meta($page_id, '_wp_page_template', $template );
    }

}

Отдельно я добавляю шаблон с add_filters

function add_campaign_template ($templates) {
    $templates['campaign_page.php'] = 'Campaign Page';
    return $templates;
}
add_filter ('theme_page_templates', 'add_campaign_template');

function set_campaign_template ($template) {
    if ('campaign_page.php' == basename ($template)) {
        $template = '/home/vagrant/src/wptest/wp-content/plugins/pm/campaign_page.php';
    }
    return $template;
}
add_filter ('page_template', 'set_campaign_template');

страница создается без ошибок.Когда я просматриваю или редактирую страницу, выбирается Default template, и мой шаблон появляется в списке.Выбор этого вручную не имеет никакого эффекта.Что я пропустил?

Мой простой шаблон страницы:

<?php
/**
 * Template Name: Campaign Page
 *
 * @package PM
 */

// get_header();
?>

    <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">

                        THIS IS THE RIGHT PAGE TEMPLATE
                        THIS IS THE RIGHT PAGE TEMPLATE
                        THIS IS THE RIGHT PAGE TEMPLATE
                        THIS IS THE RIGHT PAGE TEMPLATE

                        <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
// get_footer();

Почему он не добавляет шаблон?При включенном debug я не получаю ошибку в debug.log

1 Ответ

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

Ничего себе, длинный день.

Измените это:

function set_campaign_template ($template) {
    if ('campaign_page.php' == basename ($template)) {
        $template = '/home/vagrant/src/wptest/wp-content/plugins/pm/campaign_page.php';
    }
    return $template;
}
add_filter ('page_template', 'set_campaign_template');

на это:

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