Intereting Posts

Можно ли дать пользователю возможность выбрать между двумя отдельными файлами шаблонов для использования в сообщении?

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

single-asc.php :

<?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__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a> </div> <?php endwhile; ?> 

single-desc.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__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a> </div> <?php endwhile; ?> 

В этом примере пользователь может выбрать (возможно, щелкнув ссылку), чтобы увидеть сообщение с single-asc.php шаблона single-desc.php или файлом шаблона single-desc.php .

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

Любые предложения для этого?

Solutions Collecting From Web of "Можно ли дать пользователю возможность выбрать между двумя отдельными файлами шаблонов для использования в сообщении?"

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

 //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; } 

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

 <?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__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a> </div> <?php endwhile; ?> 

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

  • ASC: url +? Ptype = bbp_topic & my_sort = ASC
  • DESC: url +? Ptype = bbp_topic & my_sort = DESC

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

то же, что и раньше, добавьте свой запрос arg

  //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; } 

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

 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(); } } } 

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

  • ASC: url +? My_sort = ASC
  • DESC: url +? My_sort = DESC