自定义主页有一个帖子?

时间:2010-11-06 12:22:53

标签: php wordpress hook

这是关于专题框架的问题。如果这不是正确的地方,请忽略这一点。

我想问一下如何解决这个问题?我从父主题复制了页面模板,并将其重命名为home.php,然后将其设置为主页的模板。然后我在functions.php中为thematic_above_indexloop()添加了一个钩子,但它似乎不起作用。这是我的动作挂钩:

function show_single_post(){
   $i=0; // Initialize to Zero;
   if (have_posts()) :
   while (have_posts()) : the_post();
   if ($i==0) {$recentpostid = $post->ID; $i=$i+1;}
   endwhile;
   endif;
   //get only the latest post
   $posts = query_posts( 'p='.$recentpostid."'");
}
add_action('thematic_above_indexloop', 'show_single_post');

但是,如果我直接将该代码段嵌入home.php,它就可以了。我的动作钩子一定有问题吗?我对使用hooks相对较新,请启发我。

2 个答案:

答案 0 :(得分:0)

我不熟悉Thematic,所以我在http://themeshaper.com/thematic/guide/浏览了文档wiki。我找不到你在那里提到的动作。它是从当前版本的框架中删除的吗?

创建一个简单的“hellow world”函数来测试钩子是否被破坏而代码被破坏了。

function hello_world(){
   echo "hello world";
}

add_action('thematic_above_indeloop', 'show_single_post');

如果你在主页上看到“hello world”,你就会知道钩子正在工作。如果没有,你可以肯定(你可能已经是)你的show_single_post函数没有被破坏。

答案 1 :(得分:0)

由于hello world函数有效,我不得不相信你的函数是问题所在。

有一种更简单的方法可以获得最新的帖子:

    function show_single_post(){
       query_posts('orderby=ID&order=desc&showposts=1');
    }

   add_action('thematic_above_indexloop', 'show_single_post');

我使用Thematic进行了测试,它显示了主页上的最后一篇文章。试一试。

您可以在Codex page

上查看query_posts接受的所有参数