Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在WP插件中返回而不是回显_Php_Wordpress - Fatal编程技术网

Php 在WP插件中返回而不是回显

Php 在WP插件中返回而不是回显,php,wordpress,Php,Wordpress,这可能是一个愚蠢的问题,但我对编码还不熟悉,所以这里是:-)。 我正在尝试为WordPress创建一个简单的插件。该插件从MySQL数据库获取数据,并将结果回传到一个表中。我的问题是,当我使用ECHO时,插件会首先放在页面上,即使我把短代码放在页面的中间。我明白这是因为我使用echo而不是return。我只是不知道如何在我的情况下使用return。任何帮助都将不胜感激:-)。 这是我的密码: $get_runners = $connection->prepare('SELECT f

这可能是一个愚蠢的问题,但我对编码还不熟悉,所以这里是:-)。 我正在尝试为WordPress创建一个简单的插件。该插件从MySQL数据库获取数据,并将结果回传到一个表中。我的问题是,当我使用ECHO时,插件会首先放在页面上,即使我把短代码放在页面的中间。我明白这是因为我使用echo而不是return。我只是不知道如何在我的情况下使用return。任何帮助都将不胜感激:-)。 这是我的密码:

    $get_runners = $connection->prepare('SELECT first_name, last_name, nick_name, FROM database WHERE status = :status ORDER BY first_name ASC');
    $get_runners->execute([status=>'success']);

    // Create the table
    echo '
        <table id="Table" class="start-list-table">
            <thead>
                <tr class="start-list-tr">
                    <th scope="col">Name</th>
                    <th scope="col">Club</th>
                </tr>
            </thead>
            <tbody>
    ';
    // Get the runner object:
    $runners = $get_runners->fetchAll();
    foreach($runners as $runner){
        if($runner->nick_name)
        {
            $runner_name = $runner->first_name.' "'.$runner->nick_name.'" '.$runner->last_name;
        }
        else
        {
            $runner_name = $runner->first_name.' '.$runner->last_name;
        }
        echo '
            <tr class="start-list-tr">
                <td data-label="Name">'.$runner_name.'</td>
                <td data-label="Club">'.$runner->club.'</td>
            </tr>';
    }
    echo '</tbody>
    </table>';
}
add_shortcode( 'startlist', 'create_startlist' );
$get_runners=$connection->prepare('SELECT first_name,last_name,nick_name,FROM database WHERE status=:status ORDER BY first_name ASC');
$get_runners->execute([status=>'success']);
//创建表
回声'
名称
俱乐部
';
//获取runner对象:
$runners=$get_runners->fetchAll();
foreach($runner作为$runner){
如果($runner->nick\u name)
{
$runner\u name=$runner->first\u name.''.$runner->nick\u name.''.$runner->last\u name;
}
其他的
{
$runner\u name=$runner->first\u name.'.$runner->last\u name;
}
回声'
“.$runner_name”
“.$runner->club”
';
}
回声'
';
}
添加_快捷码('startlist','create_startlist');

您希望将输出分配给变量,而不是回显:

$get_runners = $connection->prepare('SELECT first_name, last_name, nick_name, FROM database WHERE status = :status ORDER BY first_name ASC');
    $get_runners->execute([status=>'success']);


    // Create the table
    $output = '
        <table id="Table" class="start-list-table">
            <thead>
                <tr class="start-list-tr">
                    <th scope="col">Name</th>
                    <th scope="col">Club</th>
                </tr>
            </thead>
            <tbody>
    ';
    // Get the runner object:
    $runners = $get_runners->fetchAll();
    foreach($runners as $runner){
        if($runner->nick_name)
        {
            $runner_name = $runner->first_name.' "'.$runner->nick_name.'" '.$runner->last_name;
        }
        else
        {
            $runner_name = $runner->first_name.' '.$runner->last_name;
        }
        $output .= '
            <tr class="start-list-tr">
                <td data-label="Name">'.$runner_name.'</td>
                <td data-label="Club">'.$runner->club.'</td>
            </tr>';
    }
    $output .= '</tbody>
    </table>';


 return $output;
}
add_shortcode( 'startlist', 'create_startlist' );
$get_runners=$connection->prepare('SELECT first_name,last_name,nick_name,FROM database WHERE status=:status ORDER BY first_name ASC');
$get_runners->execute([status=>'success']);
//创建表
$output=
名称
俱乐部
';
//获取runner对象:
$runners=$get_runners->fetchAll();
foreach($runner作为$runner){
如果($runner->nick\u name)
{
$runner\u name=$runner->first\u name.''.$runner->nick\u name.''.$runner->last\u name;
}
其他的
{
$runner\u name=$runner->first\u name.'.$runner->last\u name;
}
$output.='
“.$runner_name”
“.$runner->club”
';
}
$output.='
';
返回$output;
}
添加_快捷码('startlist','create_startlist');

这将使用串联继续通过函数填充变量。然后将
return
设置为
$output
变量。

首先阅读有关快捷码输出的更多信息:

现在我可以想到两种方法

使用。。。基本上,您需要将代码包装到
ob\u start()

第二是使用


阅读(我的重点):请注意,由短代码调用的函数不应产生任何类型的输出。短代码函数应返回用于替换短代码的文本。直接生成输出将导致意外的结果。这与过滤器函数的行为方式类似,因为它们不应该在调用时产生预期的副作用,因为您无法控制从何时何地调用它们。“有什么原因不返回输出字符串吗?非常感谢!非常有效。我刚刚将最后一个$output中的。(无法在编辑中编辑,因为它太短:-)。我编辑了它。我简直不敢相信我这么做了!我很高兴它对你有用!
function create_startlist() {
    ob_start();
     /* CODE HERE */
    return ob_get_clean();
}
function create_startlist() {
    $output = '';
    $output .= 'OUTPUT HERE';
    return $output;
}