Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有单个帖子的自定义主页?_Php_Wordpress_Hook - Fatal编程技术网

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

这是一个关于主题框架的问题。如果这不是正确的地方,就忽略这个

我想问一下我该怎么做?我从父主题复制了页面模板,并将其重命名为home.php,然后将其设置为主页的模板。然后,我在functions.php中的主题链接上添加了一个钩子,但它似乎不起作用。这是我的动作钩:

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类的函数来学习如何修改主查询。祝你好运