@WebforSelf

Как сделать сортировку вывода php файлов в wordpress?

Друзья, есть малоизвестный фреймворк Титан, в принципе он мне нравится , но решил уйти от него т.к. не обновляется в пользу ACF , обычно верстая главную (разбивал на блоки) каждый блок в своем php и потом вывод через цикл с возможностью сортировки в админ панели.

<?php
/*
Template Name: Главная страница
*/
?>
<?php get_header('main'); ?> 
<?php $titan = TitanFramework::getInstance( 'gpress' );?>

<?php 
foreach( (array) $titan->getOption('home_sortable' ) as $item) {
	get_template_part('files/homepage', $item);
} ?>

<?php get_footer('main'); ?>


https://yadi.sk/i/inEzROMEw0dprg

Вот как это дело выглядит физически.

Т.е. я сортирую в админ панели ( перетаскивая блоки) а потом с помощью массива и данной сортировки он мне выводит мои файлы в последовательности которую я хочу. Возможно сделать это средствами Advanced Custom Fields??

Задача такая чтоб я мог сверстанные блоки передвигать местами. Может кто заморачивался таким вопросом, посоветуйте как сделать?
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
cesnokov
@cesnokov
<head>&nbsp;</head>
Я использую PODS (pods.io) и на его примере расскажу как это делается. В ACF всё аналогично.

1. Создаём место где будем хранить информацию о блоках (Pods Admin > Add New > Create New > Custom Taxonomy):
5f34fc68e7afb205498073.jpeg
2. Не забываем настроить где это будет в админке (Admin UI > Menu Location > Add a submenu item to Settings menu):
5f34fccec051e901772241.jpeg
3. В получившуюся таксономию добавляем блоки:
5f34fd00c654d407645889.jpeg
4. Создаём страницу с настройками (Pods Admin > Add New > Create New > Custom Settings Page):
5f34fda7c56ae107836626.jpeg
5. На этой странице нам нужно одно поле, назовём его Blocks:
5f34fdef88dd4587755283.jpeg
Не забываем в Additional Field Options указать тип Multiple Select и формат List view.
6. На странице настроек заполняем поле Blocks блоками из кастомной таксономии:
5f34feb24ce27338812674.jpeg
Далее работаем с шаблоном, например так:
<?php

$homepage_blocks = get_option('homepage_test_blocks');

foreach ($homepage_blocks as $block) {
	$term = get_term_by('term_taxonomy_id', $block, 'homepage_blocks');
	$slug = $term->slug;
	$file_name = $slug . '.php';
	echo $file_name;
}


Результат:
homepage-work.php
homepage-slider.php
homepage-test.php


Есть ещё несколько способов как это всё сделать, но они со своими нюансами, например: можно не использовать дополнительную таксономию, а прописать все значения руками в поле типа "Relationship > Simple", но тогда могут быть проблемы с ручной сортировкой блоков. Или сделать для каждого блока отдельное поле, на подобии "Позиция #1" > и сделать выбор из списка, какой блок в ней будет. И т.д.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы