2010-04-19 75 views
0

我想在wordpress中实现一个定制的帖子检索页面。基本上,我使用AJAX调用此页面,该页面将传递一个帖子ID并从该帖子中检索某些数据。定制wordpress页面

注意:请不要将此误认为是模板问题。我不希望为单个页面创建模板 - 我希望根据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

我想,我猜你正在尝试做的顶部,这听起来像你去错误的方式。不要在管理界面中创建一个“新页面”。你想要做的是向你的Javascript提供一个文件(JSON,XHTML片段,不管),并在其中包含WP数据,对吧?我知道这个问题,在我的一些插件中使用过它。

有两种技术:

(1)这是你需要做的:做一个新的插件(只是在WP-插件宽松的PHP文件在同一格式标题为其他插件那里)。写你的函数沿着这些线路:

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。这意味着你可以创建一个插件文件并直接使用.../wp-plugin/myfile.php url进行调用。您需要包含一些WP核心文件才能使WP_Query等工作起作用。这种方法稍微脆弱一点。