1

我在 PHP 中有以下代码:

<?php if (function_exists("insert_audio_player")) {insert_audio_player("[audio:|titles=]"} ?>

它将音频播放器呈现到我在 WordPress 中的页面。我需要在这段代码中调用一个自定义字段。我的自定义字段代码也是用 PHP 编码的:

<?php print_custom_field('tc_filename'); ?>

就像是:

<?php if (function_exists("insert_audio_player")) {insert_audio_player("[audio:<?php print_custom_field('tc_filename'); ?>|titles=<?php print_custom_field('tc_title'); ?>]"} ?>

如何使用第二个代码块或将第二个代码块与第一个代码块集成?

4

3 回答 3

2

编辑:正如 OP 所述,print_custom_field()函数使用echo而不是return,所以这个答案不适用于这种特殊情况。请参阅@Jacob 的答案以获得更好的解决方案。

试试这个:

<?php
    if (function_exists("insert_audio_player")) {
        insert_audio_player(
            "[audio:" . print_custom_field('tc_filename') .
            "|titles=" . print_custom_field('tc_title') . "]"
        );
    }
?>
于 2011-03-15T00:07:12.233 回答
2
<?php 
if (function_exists("insert_audio_player")) {
    insert_audio_player("[audio:".print_custom_field('tc_filename')."|titles=".print_custom_field('tc_title')."]"
} ?>

您可以使这更容易阅读使用sprintf()

<?php 
if (function_exists("insert_audio_player")) {
    insert_audio_player(sprintf(
        '[audio:%s|titles=%s]', 
        print_custom_field('tc_filename'), 
        print_custom_field('tc_title')
    ));
} 
?>    

编辑:根据您的评论, print_custom_field 实际上回显了该字段,并且不返回它,如果没有可以使用的返回功能,则需要使用Output Buffering

You can use a new function, which calls the print function but returns it instead of printing it to the screen:

function get_custom_field($field) {
    ob_start();
    print_custom_field($field);
    return ob_get_clean();
}

And use

<?php 
if (function_exists("insert_audio_player")) {
    insert_audio_player(sprintf(
        '[audio:%s|titles=%s]', 
        get_custom_field('tc_filename'), 
        get_custom_field('tc_title')
    ));
} 
?> 
于 2011-03-15T00:08:19.493 回答
0
<?php if (function_exists("insert_audio_player")) {insert_audio_player("[audio:".function2()."|titles=".function3()."]"} ?>

然后 :

function function2()
{
print_custom_field('tc_filename');
}
function function3()
{
print_custom_field('tc_title');
}
于 2011-03-15T00:08:14.453 回答