WordPress中get_posts()内调用get_the_title()无法获取当前页标题问题
问题原因
你遇到的两个问题根源很明确:
- 标题获取错误:
setup_postdata( $post )会覆盖WordPress全局的$post对象,你在自定义文章类型的循环内调用无参数的get_the_title(),拿到的自然是循环内的fixtures-results类型文章标题,而非初始的当前页面标题。 - 内容输出到顶部:直接在全局作用域执行
echo会在页面渲染流程的早期输出内容,自然出现在页头位置;挂载钩子报错大概率是你直接在回调函数内执行输出、变量作用域错误,或者未正确处理返回值导致。
解决步骤
- 预存当前页面标题:在执行自定义
get_posts查询前,先把当前页面的标题存到临时变量里,不受后续查询影响。 - 使用内容过滤器钩子输出:挂载到
the_content钩子,把要输出的内容拼到正文内容后面再返回,不要直接echo。 - 修正未定义变量:你原代码里的
$postID未赋值,属于无效变量。
修正后可直接使用的代码
把下面的代码放到你当前主题的functions.php文件里即可:
add_filter('the_content', 'append_fixtures_results_to_content'); function append_fixtures_results_to_content($content) { // 仅在单页面/文章主查询中生效,避免在列表等位置输出 if (!is_singular() || !in_the_loop()) return $content; // 第一步:先预存当前页面的标题,不会被后续查询覆盖 $current_page_title = get_the_title(); // 用来拼接输出内容的变量 $output = ''; $posts = get_posts(array( 'numberposts' => 10, 'post_type' => 'fixtures-results', 'post_status' => 'publish' )); if($posts) { foreach($posts as $post) { setup_postdata( $post ); // 加空值判断避免报错 if (!get_field('fixtures_results')) continue; $matches = str_replace("|% ","|%",get_field('fixtures_results')); preg_match_all("@[A-z0-9 ./'áàâäãåǻăāąấấặắǎȧạàãáćĉċčççďđḑḋḍdéèêëĕěēęėềẽȩẹéĝ ğġģǧǵḡĥħȟḣḥḩíìîïĭїĩīįǐĪỊ̣iỊǏĨị̣ịıíĵķǩḱḳļľŀĺĺóòôöõðőŏōỏǒǫȯoøồớòóõöñńņňʼnŋǹṅṇ ŕŗřṙṛśŝşšṡṣşșţťŧțṫṭtúùûüůūűųũŭǔǘǚǜụuưüúŵŷýÿўỹẏỳỵyẙȳẙźżžẑẓḅḟḿṁṃṕṗṽṿḷẁẃẅẉẘ ẘẋẍÒÓÔÕÖŐǑǪŌȮØÙÚÛǓǗǙǛŨŮŰŲÜỤŪĆĈČÇÀÁÂÃÄÅẠĄĀȦǍÈÉÊËĖĘĚẸẼĒȨḾṀṂŚŜŞŠṠṢŹŻŽẐẒŃŅŇ ṄṆÑǸḢḤḨĤȞĹĻĽĿŢŤṪṬŖŘṘṚĜĠĢǦǴḠẀẂẄẈŴḊḌḐĎĐÐṔṖĶǨḰḲẊẌṼṾỴỸỲẎŸȲŶÝĴȷḄḞḶŁłÏÎÍÌıİ ßıs-]+#[^#]+@", $matches, $countries); $results = []; foreach ($countries[0] as $c) { $c = explode("#", $c); $country_name = $c[0]; // 这里做你要的标题比对逻辑,用预存的当前页面标题比对 if ($current_page_title === $country_name) { $results[$country_name] = []; $params = explode("%", $c[1]); foreach ($params as $key) { if (!empty($key)) { $test = explode("|", trim($key, '|')); // 把要输出的内容拼到$output变量里,不要直接echo $output .= $country_name . $test[0] . $test[1] . $test[2].'<br>'; } } } } } wp_reset_postdata(); } // 把自定义内容拼到正文后面返回 return $content . $output; }
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

