Как сделать одностраничный шаблон Wordpress с веточкой
Я пытаюсь сделать один шаблон Wordpress с помощью Twig, но пока все провалилось.
{% extends 'layouts/base.twig' %}
{% block content %}
{% for page in pages() %}{{ set_up_page(page) }}
{% include 'content/content-' ~ page.post_name ~ '.twig' %}
{% endfor %}
{% endblock %}
Как выглядит один из шаблонов:
<section id="about" {{ wp.post_class }}>
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<h2 class="section-heading">{{ wp.the_title }}</h2>
<h3 class="section-subheading text-muted">{{ wp.get_post_meta(wp.get_the_ID() , 'st_page_subtitle', true) }}</h3> <!-- To be Changed to subtext for title -->
</div>
</div>
<div class="row">
<div class="col-lg-12">
{{ wp.the_content }}
</div>
</div>
</div>
Соответствующие функции:
$wpgetpages = new Twig_SimpleFunction("pages", function() {
$currentID = get_the_ID();
$menu_order = wp_get_nav_menu_items('header');
$menu_items = array();
foreach($menu_order as $item) {
$menu_items[] = $item->ID;
}
$args = array('post_type' => 'page',
'status' => 'publish',
'exclude'=> $currentID,
'orderby' => 'menu_order',
'order' => 'ASC'
);
$pages = get_posts($args);
return $pages;
});
$wpsetpages = new Twig_SimpleFunction("set_up_page", function($arg) {
setup_postdata($arg);
});
self::$twig_environment->addFunction($wpposts);
self::$twig_environment->addFunction($get_theme_options);
self::$twig_environment->addFunction($wppostdata);
self::$twig_environment->addFunction($wpgetpages);
self::$twig_environment->addFunction($wpsetpages);
Это выводит шаблоны, но устанавливает заголовок страницы из шаблона в качестве заголовка главной страницы ![введите описание изображения здесь]()
Было бы очень полезно помочь в устранении этого.
Ответы
Ответ 1
Не уверен, правильно ли я получил ваш вопрос, но цитировал аналогичную проблему
На моей единственной странице страницы я использовал the_title вместо single_post_title.
Итак, попробуйте изменить
<h2 class="section-heading">{{ wp.the_title }}</h2>
к
<h2 class="section-heading">{{ wp.single_post_title }}</h2>
Также см. ссылку:
Ответ 2
Вы сомневаетесь, немного неясно. Но если ваша основная проблема заключается в том, что все отдельные страницы, представленные на этой странице, имеют заголовок "HOME", это должно сделать это.
Попробуйте изменить это:
<h2 class="section-heading">{{ wp.the_title }}</h2>
:
<h2 class="section-heading">{{ wp.get_post_meta(wp.get_the_ID() , 'title', true) }}</h2>
Если он работает для подзаголовка, он также должен работать для заголовка.
Ответ 3
Если вы пытаетесь использовать Twig внутри темы WordPress, я настоятельно рекомендую установить плагин под названием Timber. Он заботится о большой сложности интеграции WordPress для вас. У них есть стартовая тема, которую вы можете проверить, чтобы лучше понять, как объединить вашу тему: https://github.com/timber/starter-theme
У них также есть полная документация, которую вы можете найти здесь: https://github.com/jarednova/timber/wiki