Php 带有单个帖子的自定义主页?
这是一个关于主题框架的问题。如果这不是正确的地方,就忽略这个 我想问一下我该怎么做?我从父主题复制了页面模板,并将其重命名为home.php,然后将其设置为主页的模板。然后,我在functions.php中的主题链接上添加了一个钩子,但它似乎不起作用。这是我的动作钩:Php 带有单个帖子的自定义主页?,php,wordpress,hook,Php,Wordpress,Hook,这是一个关于主题框架的问题。如果这不是正确的地方,就忽略这个 我想问一下我该怎么做?我从父主题复制了页面模板,并将其重命名为home.php,然后将其设置为主页的模板。然后,我在functions.php中的主题链接上添加了一个钩子,但它似乎不起作用。这是我的动作钩: function show_single_post(){ $i=0; // Initialize to Zero; if (have_posts()) : while (have_posts()) : the_p
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,它就会工作。我的动作钩一定出毛病了?我对使用钩子比较陌生,请告诉我。我不熟悉主题,所以我浏览了位于的文档wiki。我在那里找不到你提到的动作。它是否已从当前版本的框架中删除 创建一个简单的“hellow world”函数来测试钩子是否被破坏,代码是否被破坏
function hello_world(){
echo "hello world";
}
add_action('thematic_above_indeloop', 'show_single_post');
如果你在主页上看到“hello world”,你就会知道钩子在工作。如果没有,您可以确定(您可能已经这样做了)您的show_single_post功能没有损坏。既然hello world功能可以工作,我不得不相信您的功能就是问题所在 有一种更简单的方法可以获取单个最新帖子:
function show_single_post(){
query_posts('orderby=ID&order=desc&showposts=1');
}
add_action('thematic_above_indexloop', 'show_single_post');
我测试了这个主题,它显示了主页上的最后一篇文章。试试看
您可以检查
query\u posts
在Nope上接受的所有参数,它存在于实际主题中。那个维基不完整。是的,你的样本钩子确实有效,但不幸的是,我的钩子仍然无效。到目前为止,论坛上还没有人知道到底出了什么问题。这个动作挂钩看起来很麻烦…因为看起来你没有得到你需要的结果,也许你可以把你的问题发布在StackExchange的姐妹网站WordPress Answers上?我用一个有效的解决方案添加了第二个答案。这很有效!非常感谢!问题:$query是全局变量,对吗?它是查询对象的处理程序吗?如果是这样,为什么你没有在函数中使用它?应该改为$query->query\u posts()吗?哎呀。不应将$query处理程序传递给函数。那是我以前的想法。对不起,弄错了。我已编辑了要删除的答案。但是是的,我的理解是$query持有$query对象。但是不,你不需要像你展示的那样使用它。query_posts是一个模板标记,与_content()类似。有关$query和$WP_查询的整体信息,请参阅。有时,在运行主查询之前直接操作它会很有帮助。query\u posts使用您提供的字符串运行第二个查询。如果您发现自己从未使用默认的主查询并不断进行自己的查询,那么您可能希望通过直接使用$WP_query类的函数来学习如何修改主查询。祝你好运