Можно Ли Дать Пользователю Возможность Выбирать Между Двумя Отдельными Файлами Шаблонов Для Использования В Сообщении?

  • Автор темы 3D.KENWOOD
  • Обновлено
  • 22, Oct 2024
  • #1

По сути, я хочу позволить пользователю выбирать, какие файлы шаблонов он или она хочет использовать в сообщении:

одиночный-asc.php:

 
 single-desc.php 

одиночный-desc.php:

single-asc.php

В этом примере пользователь может выбрать (возможно, щелкнув ссылку) просмотреть публикацию с <?php $custom_posts = new WP_Query(); ?> <?php $custom_posts->query('post_type=bbp_topic&order=DESC'); ?> <?php while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?> <div class="content-block-2"> <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__('Постоянная ссылка на %s', 'twentyten'), the_title_attribute('echo=0')); ?>" rel="bookmark"><?php the_title(); ?></a> </div> <?php endwhile; ?> template file or <?php $custom_posts = new WP_Query(); ?> <?php $custom_posts->query('post_type=bbp_topic&order=ASC'); ?> <?php while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?> <div class="content-block-2"> <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__('Постоянная ссылка на %s', 'twentyten'), the_title_attribute('echo=0')); ?>" rel="bookmark"><?php the_title(); ?></a> </div> <?php endwhile; ?> файл шаблона.

(примеры ASC и DESC приведены только для справки, эти два шаблона будут иметь разный код)

Есть какие-нибудь предложения по этому поводу?

#посты #шаблоны

3D.KENWOOD


Рег
03 Jan, 2011

Тем
50

Постов
188

Баллов
438
  • 25, Oct 2024
  • #2

Если различия на страницах — это просто аргументы запроса, вы можете добавить переменные запроса и использовать их в одном шаблоне:

 
 
 
 add_action("template_redirect", 'sort_template_redirect');
// Template selection
function sort_template_redirect()
{

global $wp;

global $wp_query;

if (isset($wp->query_vars["my_sort"]))

{

// Let's look for the template file in the current theme

if (array_key_exists('my_sort', $wp->query_vars) && $wp->query_vars['my_sort'] == 'ASC'){

include(TEMPLATEPATH . '/single-asc.php');

die();

}

if (array_key_exists('my_sort', $wp->query_vars) && $wp->query_vars['my_sort'] == 'DESC'){

include(TEMPLATEPATH . '/single-desc.php:');

die();

}

}
}
 

ваш запрос должен выглядеть так:

//add your arguments to query vars add_filter('query_vars', 'my_query_vars'); function my_query_vars($vars) { // add my_sort to the valid list of variables $new_vars = array('my_sort'); $vars = $new_vars + $vars; return $vars; }

и ваши ссылки для пользователя должны быть:

  • ASC: URL + ?ptype=bbp_topic&my_sort=ASC
  • DESC: URL + ?ptype=bbp_topic&my_sort=DESC

Сейчас если ваши различия на страницах больше, чем аргументы запроса, вы можете изменить страницу шаблона, используя template_redirect hook:

так же, как и раньше, добавьте аргумент запроса

<?php $custom_posts = new WP_Query(); ?> <?php $custom_posts->query(array('post_type' => get_query_var('ptype'), 'order' => get_query_var('my_sort'))); ?> <?php while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?> <div class="content-block-2"> <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__('Постоянная ссылка на %s', 'twentyten'), the_title_attribute('echo=0')); ?>" rel="bookmark"><?php the_title(); ?></a> </div> <?php endwhile; ?>

затем добавьте функцию в хук template_redirect и создайте перенаправление на основе этого аргумента:

//add your arguments to query vars add_filter('query_vars', 'my_query_vars'); function my_query_vars($vars) { // add my_sortand ptype to the valid list of variables you can add as many as you want $new_vars = array('my_sort','ptype'); $vars = $new_vars + $vars; return $vars; }

и еще раз вам нужно будет добавить аргументы в ссылку так:

  • ASC: URL + ?my_sort=ASC
  • DESC: URL + ?my_sort=DESC
 

Firash


Рег
10 Jan, 2004

Тем
72

Постов
187

Баллов
567
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно