功能输出没有出现在div中

时间:2017-02-14 11:17:16

标签: php wordpress shortcode

这是我第一次尝试使用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或类ID,只是作为文本出现。我如何将它包装在div中并给出id以使其正确地位于内容页面上(它应该显示在2个图像之间和另一个短代码之下)我已经设法先给它一个类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' );

由于

  • 托卡

1 个答案:

答案 0 :(得分:0)

短代码函数应该返回结果,而不是直接输出它。

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

编辑:你只能从一个函数返回一个值 - 所以如果你的wpsl_get_staff应该返回所有三种类型的数据,那么你需要先将这些数据组装成一个字符串变量,然后返回在函数的最后 - 类似这样:

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;
}