这是我的功能:
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;”文件的路径显示在内容的底部,就像我想要的表格一样。'
感谢您的帮助。
答案 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');
您可以在此函数中绘制它,然后返回它或返回信息然后绘制它。