div 中未出现函数输出

Function output not appearing in div

这是我第一次尝试 php。 尝试在 wordpress 中创建自定义短代码以调用自定义元数据并将其放入页面内容中。没有

它工作正常
function wpsl_staff() {
echo '<div class="staff">' .wpsl_get_staff(). '</div>';
function wpsl_get_staff() {

简码为

add_shortcode( 'wpsl_staff', 'wpsl_get_staff' );

输出是正确的,但输出出现在页面顶部所有其他内容之上,当我在浏览器中检查时,它没有 div 或 class id,只是显示为文本.我如何将它包装在 div 中并提供 id 以便它正确地位于内容页面上(它应该显示在 2 个图像之间和另一个短代码下方)我之前已经设法给它一个 class id 并且让它出现在 div 中,但输出仍然出现在页面顶部图像和其他简码上方。

<?php
function wpsl_get_staff() {
global $post;
$queried_object = get_queried_object();{

$Manager = get_post_meta( $queried_object->ID, 'wpsl_Manager', true ); 
if  (!empty( $Manager )) return 'Manager : ' .$Manager . "<br>";
        else {}

$Assitant = get_post_meta( $queried_object->ID, 'wpsl_Assistant_Manager', true );
if  (!empty( $Assistant )) return 'Assistant Manager : ' .$assistant . "<br>";
        else {}

$Agent = get_post_meta( $queried_object->ID, 'wpsl_Agent', true ); 
if  (!empty( $Agent )) return 'Agent : ' .$Agent . "<br>";
        else {}
}
}

function wpsl_staff() {
echo '<div class="staff">' .wpsl_get_staff(). '</div>';

}
add_shortcode( 'wpsl_staff', 'wpsl_dio_staff' );

谢谢

简码函数应该return结果,而不是直接输出。

function wpsl_staff() {
  return '<div class="staff">' .wpsl_get_staff(). '</div>';
}

编辑:你只能从一个函数中 return 一个值 - 所以如果你的 wpsl_get_staff 应该是所有三种类型的 return 数据,那么你需要 assemble 首先将数据放入一个字符串变量中,然后 return 在函数的末尾 - 像这样:

function wpsl_get_staff() {
  global $post;
  $queried_object = get_queried_object();
  $output = '';

  $Manager = get_post_meta( $queried_object->ID, 'wpsl_Manager', true ); 
  if (!empty( $Manager )) {
    $output .= 'Manager : ' .$Manager . "<br>";
  }

  $Assitant = get_post_meta( $queried_object->ID, 'wpsl_Assistant_Manager', true );
  if (!empty( $Assistant )) {
    $output .= 'Assistant Manager : ' .$assistant . "<br>";
  }

  $Agent = get_post_meta( $queried_object->ID, 'wpsl_Agent', true ); 
  if (!empty( $Agent )) {
    $output .= 'Agent : ' .$Agent . "<br>";
  }

  return $output;
}