将快码参数推送到模板

时间:2016-04-25 作者:brandozz

我试图将一个shortcode参数值推送到模板文件中,但由于某些原因,我无法将目标数组值放入单个变量中。以下是我的代码和使用的快捷码:

function content_table($atts) {
    $atts = shortcode_atts(array(
        \'tablepageid\' => \'\'
    ), $atts);

    include(locate_template(\'table-layout.php\'));
}
add_shortcode(\'ContentTable\', \'content_table\');
Edit 我删除了短代码中的引号,现在可以看到值:[ContentTablePageId=4799]

我创建了一个页面来测试shortcode函数:

print_r(array_values($atts));
Array ( [0] => 4799 )
快捷码中的值可用,但我在将该值放入模板要使用的变量时遇到了一些问题:

$arr = $atts[0];
$arrTable变量为空。。。我不明白为什么不是4799。

2 个回复
最合适的回答,由SO网友:Z. Zlatev 整理而成

您可能对array_values() 这将始终只获取不带键的数组值$atts 变量实际上是一个关联数组。

要提取属性,请使用$arr = $atts[\'tablepageid\'];

干杯

SO网友:Nathan Powell

短代码旨在return 值,或echo 他们您可以使用include 但除非你提供$atts 对于函数,您将看不到任何内容。

基本上没有人可以帮助您,除非我们看到您的其余代码。我的最佳猜测是,您需要从shortcode中的属性全局声明变量,然后将其声明为模板。

执行上述操作只是避免了创建一个函数的愚蠢,该函数接受属性作为参数传递给将函数返回值重新声明为局部变量的文件。

该列表在PHP中继续显示。如果您显示您的include文件,这将有所帮助。

相关推荐

Required()/Include()帖子模板添加额外内容

我使用WP端点通过Javascript请求额外的post-HTML。当我使用Postman查询端点时,我看到了添加到标记中的其他内容,而它不在我的代码中的任何地方。我有一种感觉,这是PHP错误,但我不知道是什么问题。function get_post($data) { global $post; $post = get_post($data[\'id\']); $previous_post = get_previous_post();