在函数中间插入条件可使其产生两种不同的结果

时间:2017-01-02 作者:Pete

我有一个显示自定义分类术语的逗号分隔列表的函数。

<?php
$product_terms = get_the_terms( get_the_ID(), \'XYZ\' );
// Make sure we have terms and also check for WP_Error object
if (    $product_terms
    && !is_wp_error( $product_terms )
) {
    @usort( $product_terms, function ( $a, $b )
    {
        return strcasecmp(
            $a->slug,
            $b->slug
        );
    });
    // Display your terms as normal
    $term_list = [];
    foreach ( $product_terms as $term )
        $term_list[] = \'<a href="\' . get_term_link( $term ) . \'">\' . esc_html( $term->name ) . \'</a>\';
    //$term_list[] = esc_html( $term->name );
    echo implode( \', \', $term_list );
}
?>
我已经注释掉了显示未链接的术语的选项。。。

// $term_list[] = esc_html( $term->name );
如果我取消了上面一行的注释,那么我会注释掉这一行。。。

$term_list[] = \'<a href="\' . get_term_link( $term ) . \'">\' . esc_html( $term->name ) . \'</a>\';
我想插入一个基本条件,让您可以选择使用这两行中的任何一行。e、 g。。。

<?php if (is_user_logged_in()) { ?>
    $term_list[] = \'<a href="\' . get_term_link( $term ) . \'">\' . esc_html( $term->name ) . \'</a>\';
<?php } else { ?>
    $term_list[] = esc_html( $term->name );
<?php } ?>

1 个回复
最合适的回答,由SO网友:Magnus Guyra 整理而成

我不太清楚你的意思,因为你基本上已经回答了你自己的问题,正如我所理解的。

我看到的唯一一件事是,您应该删除if语句的每个部分,因为其中的代码也是php。

<?php 
if (is_user_logged_in()) {
        $term_list[] = \'<a href="\' . get_term_link( $term ) . \'">\' . esc_html( $term->name ) . \'</a>\';
    } else {
        $term_list[] = esc_html( $term->name );
    } 
?>

相关推荐