вывод пользовательских сообщений на странице

Я пытаюсь написать функцию, которая выводит набор сообщений на странице. Поскольку я хочу отображать больше, чем только заголовки сообщений, wp_get_archives() не будет делать (я думаю). Функция добавления почтового списка анализирует метатег страницы, чтобы узнать, какой список он должен выводить. Затем он запускает запрос для этих типов сообщений и выводит их с использованием того же фрагмента шаблона, который используется в archive-{posttype}.php . По крайней мере, так оно и должно работать. Вот функция, которая живет в моем файле functions.php :

 function ASH_archive(){ global $posts; $postholder=posts;//so I can reset to original after archives done if(!$ptype=get_post_meta('ASHarchivetype')) return;//no archive requested $path="layouts/layout-blog.php"; $pt='post'; switch($ptype){ case 'equipment': case 'dyeing': case 'spinning': case 'weaving': $pt='ash_'.$ptype; $path="layouts/{$ptype}/layout-blog.php"; break; case 'loomsong': $pt='ash_loomsong'; break; } $posts=get_posts(array('post_type'=>$pt)); get_template_part($path); $posts=$postholder; //reset to original value } 

Я хочу использовать функцию в этом шаблоне:

 <?php /* Template Name: Archives with Content */ get_header(); ?> <div id="main-col"> <?php suffusion_page_navigation(); suffusion_before_begin_content(); ?> <div id="content"> <?php global $post; if (have_posts()) { while (have_posts()) { the_post(); $original_post = $post; ?> <div <?php post_class('fix'); ?> id="post-<?php the_ID(); ?>"> <?php suffusion_after_begin_post(); ?> <div class="entry-container fix"> <div class="entry fix"> <?php suffusion_content(); ?> </div><!--/entry --> <?php // Due to the inclusion of Ad Hoc Widgets the global variable $post might have got changed. We will reset it to the original value. $post = $original_post; suffusion_after_content(); ?> </div><!-- .entry-container --> <?php ASH_archive(); //NOTHING HAPPENS. WHY???? comments_template(); ?> </div><!--/post --> <?php } } ?> </div></div> <?php get_footer(); ?> 

Функция, похоже, ничего не делает. Я не знаю, связано ли это с тем, что функция написана неправильно или мне нужно прикрепить ее к какому-то крючку. Я читал об фильтрах и действиях, и я не могу понять, какой крючок я должен использовать для своей функции или даже если это правильное направление. Помогите?

ps, что может быть даже лучше, это короткий код для вызова функции, которую я хотел.

Solutions Collecting From Web of "вывод пользовательских сообщений на странице"

Я не уверен, что у меня достаточно информации для этого, чтобы работать так, как вы ожидаете. Я могу сказать вам, что то, что вы используете, не будет работать для некоторых, независимо от используемых вами фильтров.

Первая ошибка: вы используете скобки, которые не закрыты

Во-вторых, вы используете, если у вас есть сообщения … но затем вы перезагружаете его в самом конце кода.

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

 <?php /* Template Name: Archives with Content */ get_header(); ?> <div id="main-col"> <?php suffusion_page_navigation(); suffusion_before_begin_content(); ?> <div id="content"> <?php global $post; if (have_posts()) : while (have_posts()) : the_post(); $original_post = $post; ?> <div <?php post_class('fix'); ?> id="post-<?php the_ID(); ?>"> <?php suffusion_after_begin_post(); ?> <div class="entry-container fix"> <div class="entry fix"> <?php suffusion_content(); ?> </div><!--/entry --> <?php endwhile; ?> <?php else : // Due to the inclusion of Ad Hoc Widgets the global variable $post might have got changed. We will reset it to the original value. $post = $original_post; suffusion_after_content(); ?> <?php endif; ?> </div><!-- .entry-container --> </div> </div>