在“代码段”插件中编写时,“高级自定义字段”代码显示为纯文本。怎么修?

时间:2019-03-28 03:21:07

标签: wordpress advanced-custom-fields code-snippets

在Wordpress上,我试图使用带有高级自定义字段的代码段将链接添加到单个产品页面。我的代码显示为纯文本,而不是链接。

我尝试了以下代码:

function product_datasheet_below_summary() { ?>
    $link = get_field('datasheet');

if( $link ): 
    $link_url = $link['url'];
    $link_title = $link['title'];
    $link_target = $link['target'] ? $link['target'] : '_self';
    ?>
    <a class="button" href="<?php echo esc_url($link_url); ?>" target="<?php echo esc_attr($link_target); ?>"><?php echo esc_html($link_title); ?></a>
<?php
};
add_action( 'ocean_after_single_product_meta', 'product_datasheet_below_summary', 5 );

这不起作用。我希望链接到数据表,但它只是以纯文本格式打印:

$link = get_field(‘datasheet’); if( $link ): $link_url = 
$link[‘url’]; $link_title = $link[‘title’]; $link_target = 
$link[‘target’] ? $link[‘target’] : ‘_self’; ?>

后跟一个通用的方形按钮链接。

我在这里做错了什么?非常感谢您的帮助。


感谢您的建议。我没有使用代码片段,而是创建了一个子主题并编辑了相关的.php文件,添加了以下内容:

`

                if( $link ): 
                    $link_url = $link['url'];
                    $link_title = $link['title'];
                    $link_target = $link['target'] ? $link['target'] : '_self';
                    ?>
            <a class= "button" id="datasheet-button" href="<?php echo esc_url($link_url); ?>" target="<?php echo esc_attr($link_target); ?>"><?php echo esc_html($link_title); ?></a>
            <?php endif; ?>`

2 个答案:

答案 0 :(得分:0)

您在第一个?>之后得到纯文本,因为这是一个php结束标记,并且代码片段插件不允许多个php语句,而只是崩溃和转储纯文本而不是执行代码。

您需要将整个函数重写为一个php语句和echo所有按钮html,以及php中定界的html变量与.一起使用。一个简单的例子:

<?php 
$var = "Hello World";
echo "<p>The value of the variable is : " . $var . "</p>";
?>

您可能还需要使用更标准的ACF get字段构造:

$value = get_field( "text_field" );

在SE中搜索在html中回显php的更多示例。

答案 1 :(得分:0)

您的函数到处都是,我已经对其进行了清理,使其可以在使用对象的输出中工作,而不是回显按钮代码的多个部分。我认为这更易于管理,并且看起来更好,因为它使HTML和PHP代码尽可能地分开:

function product_datasheet_below_summary() {
    $link = get_field('datasheet');

    if( $link ){
        $link_url = $link['url'];
        $link_title = $link['title'];
        $link_target = $link['target'] ? $link['target'] : '_self';
    } ob_start();?>

    <?php if($link):?>
        <a class="button" href="<?php echo $link_url;?>" target="<?php echo $link_target;?>"><?php echo $link_title;?></a>
    <?php endif;

    return ob_get_clean();
} add_action( 'ocean_after_single_product_meta', 'product_datasheet_below_summary', 5 );?>