自定义wordpress页面

时间:2010-04-19 02:53:14

标签: wordpress

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

注意:请不要将此误认为是模板问题。我不希望一个页面的模板 - 我希望这个页面根据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函数中来处理查询。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您必须包含wp-blog-header.php文件。如果您正在创建的页面位于主题文件夹中,那么您可以在代码顶部放置类似的内容

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

答案 1 :(得分:1)

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

有两种技巧:

(1)这就是你需要做的事情:制作一个新的插件(只是wp-plugins中一个松散的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');

当加载页面以查看网址是否与您要劫持并用于发送自定义数据的网址相匹配时,它的作用是什么。如果是,您发送数据/文件/您想要的任何内容并退出(死)。

如果您想要更详细的语法,请大声喊叫。它有点乱,但效果很好。

(2)直接调用您的插件文件。 WP将只处理尚不存在的文件,剩下的就是Apache。这意味着您可以创建一个插件文件并使用... / wp-plugin / myfile.php url直接调用它。您需要包含一些WP核心文件才能使WP_Query工作。它的方法稍微脆弱一点。