2010-04-19 4 views
0

Я хотел бы создать пользовательскую страницу для поиска сообщений в Wordpress. В основном, я использую AJAX для вызова этой страницы, на которой будет передан идентификатор сообщения и получить определенные данные из этого сообщения.custom wordpress page

Примечание: пожалуйста, не принимайте это за шаблон вопроса. Я не хочу шаблон для одной отдельной страницы. Я ищу, чтобы эта страница запрашивала несколько разных сообщений на основе postID и возвращала определенные данные из этой публикации.

Так что я попытался создать страницу

<?php 
$args=array(
     'p'=>'77' 
    ); 
    $friends = new WP_Query($args); 
?> 
<?php if ($friends->have_posts()) : the_post(); ?> 

    <?php the_title(); ?> 
    <?php the_content(); ?> 

<?php else: ?> 
    <p>Sorry, no posts are available.</p> 
<?php endif; ?> 

Но это не работает, так как он не загружается в функции Wp для обработки запроса.

Заранее благодарим за любую помощь!

ответ

1

Вы должны включить файл wp-blog-header.php. Если страница, которую вы создаете в папке вашей темы, то вы бы поставить что-то вроде этого в верхней части кода

<?php require_once ('../../../wp-blog-header.php');?>

1

Я думаю, что я предполагаю, что вы пытаетесь сделать, и это звучит, как вы это происходит неправильно. Не создавайте «новую страницу» в интерфейсе администратора. Что вы хотите сделать, это передать файл (JSON, XHTML-фрагмент, что угодно) на ваш Javascript и включить в него данные WP, не так ли? Я знаю эту проблему, использовав ее в некоторых моих плагинах.

Есть два способа:

(1) Это то, что вам нужно сделать: создать новый плагин (только свободный файл PHP в WP-плагинов с тем же форматом заголовка, как и другие плагины в там). Напишите функцию вдоль этих линий:

function mydatapage(){ 
    if (...$_SERVER['REQUEST_URI'] == the one I am using ...) { 
     $args=array(
      'p'=>'77' 
     ); 
     $friends = new WP_Query($args); 
     if ($friends->have_posts()) : 
      the_post(); 
      the_title(); 
      the_content(); 
     else:>? 
<p>Sorry, no posts are available.</p> 
     <?php endif; 
     die(); 
    } //else do nothing and leave WP to serve the page normally 
} 
//Crucially: 
add_action('init', 'mydatapage'); 

Что это делает, это сделать поиск, когда страницы загружаются, чтобы увидеть, если URL совпадает с тем, который вы хотите захватить и использовать для отправки пользовательских данных. Если это так, вы отправляете данные/файл/все, что хотите, и выходите (умереть).

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

(2) Непосредственно вызывайте свой файл плагина. WP будет обрабатывать только файлы, которые еще не существуют, и оставить остальные в Apache. Это означает, что вы можете создать файл плагина и вызвать его напрямую с помощью URL .../wp-plugin/myfile.php. Вам нужно будет включить некоторые из основных файлов WP, чтобы работать с WP_Query. Это немного более хрупкий метод.