WordPress简码功能在所有内容上方显示包含的文件

时间:2018-09-13 19:13:54

标签: wordpress shortcode

这是我的功能:

            function include_product_table( $atts ) {
            $a = shortcode_atts( array(
            'tablename' => ''
            ), $atts );
            $tablefile = '/home/panacol1/data/wp-content/themes/Divi-child/producttables/pt-'.$a[ 'tablename' ].'.php';

            return include $tablefile;

            }
            add_shortcode('producttable', 'include_product_table');

我的帖子包含带有某些NextGen图像的文本内容,然后结尾为:

'[[producttable tablename =“ bonding-plastics-and-dislike-substrates”]'

将调用包含表HTML的文件。但是该表显示在内容之前。它也显示在Wordpress仪表板中帖子编辑页面标题的上方。

如果我从“返回包括$ tablefile;”行中删除“ include”;使它“返回$ tablefile;”文件的路径显示在内容的底部,就像我想要的表格一样。'

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您可以通过几种方法执行此操作。我不知道您的tablename.php文件是什么样子,但我认为它基本上是平面HTML。

function include_product_table( $atts ) {
    $a = shortcode_atts( array(
      'tablename' => ''
    ), $atts );
    $tablefile = ABSPATH . '/wp-content/themes/Divi-child/producttables/pt-'.$a[ 'tablename' ].'.php'; // filepath relative to WP install path.
    if (!is_file($tablefile)) { 
          // Bail out if the file doesn't exist
          return false;
    }

    ob_start();
    include $tablefile;
    $table_data = ob_get_contents();
    ob_end_clean();

    return $table_data;
}
add_shortcode('producttable', 'include_product_table');

当您调用ob_get_contents();时,PHP输出缓冲区将捕获tablename.php要显示的任何HTML并将其放入$ table_data中。

运行ob_end_clean()只是在清理自己。

答案 1 :(得分:0)

您不应返回,在php中包含函数。 例如您的表文件(pa-1.php):

<?php
function p_1(){
return "Hi";
}
?>

和您的简码:

function include_product_table( $atts ) {
            $a = shortcode_atts( array(
            'tablename' => ''
            ), $atts );
            $tablefile = get_template_directory().'/Divi-child/producttables/pt-'.$a[ 'tablename' ].'.php';

 include $tablefile;
$function_name = "p_".$a[ 'tablename' ];
return $function_name();

            }
            add_shortcode('producttable', 'include_product_table');

答案 2 :(得分:0)

如果您在php文件中绘制表格,我建议您将表格信息放在数组中,然后:

  function include_product_table( $atts ) {
        $a = shortcode_atts( array(
        'tablename' => ''
        ), $atts );
        $tablefile = '/home/panacol1/data/wp-content/themes/Divi-child/producttables/pt-'.$a[ 'tablename' ].'.php';

        require_once($tablefile);

        table_information = function_in_your_php_file_return_table_information();

        return table_information;

        }
        add_shortcode('producttable', 'include_product_table');

您可以在此函数中绘制它,然后返回它或返回信息然后绘制它。