2010-04-19 81 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等工作起作用。這種方法稍微脆弱一點。