即使使用 return,Wordpress Shortcode 也会乱序显示数据

Wordpress Shortcode displaying data out of order even using return

我正在尝试使用我的 WP Shortcode 显示一些数据,但它显示的一切都乱七八糟。搜索了一下,文档说你需要在函数中使用 return,但它仍然不起作用。

这是代码

function dwwp_jobs_from_california($atts){

  $atts = shortcode_atts(array(
    'title' => 'All jobs in California:',
    ),
    $atts
  );

  $query = new WP_Query( array('post_type' => 'job'));
  $jobs = "<h1>" . $atts['title'] . '</h1><br>';
  if( $query->have_posts()):
    while ( $query->have_posts() ) :
      $query->the_post();
      $jobs .= '<h3>' . the_title() . '</h3><br>';
    endwhile;
  endif;

  $jobs .= "End of the loop!";
  wp_reset_query();
  return $jobs;
  }

add_shortcode('jobs_california', 'dwwp_jobs_from_california');

在我的 Wordpress 页面中:

"Content of the page"

[jobs_california]

它在页面上呈现的内容:

[jobs_california]
"Content of the page"

我也必须承认我不太习惯使用 PHP,如果我的代码质量不好,请见谅。

谁能告诉我我做错了什么?提前致谢!

我认为您遇到的唯一问题是您使用的 the_title()echo post 标题...但是您想构建一个 html 字符串,它将由您的短代码函数返回。尝试使用:

the_title('', '', false)

或者,更好:

get_the_title()

希望对您有所帮助!