仅在需要时才在PHP语句中使用逗号

时间:2013-01-24 18:57:57

标签: php wordpress-theming

我正在为WordPress制作一个自定义主题,并且可能是逗号中最愚蠢的问题!我正在使用以下代码来呈现entry-meta:

<?php
                    printf( __( '<span class="meta-prep meta-prep-author screenreader">Posted on </span><a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s" pubdate>%3$s</time></a> <span class="meta-sep"> by </span> <span class="author vcard"><a class="url fn n" href="%4$s" title="%5$s">%6$s, %7$s</a></span>', 'ngngcustom' ),
                        get_permalink(),
                        get_the_date( 'c' ),
                        get_the_date(),
                        get_author_posts_url( get_the_author_meta( 'ID' ) ),
                        sprintf( esc_attr__( 'View all posts by %s', 'ngngcustom' ), get_the_author() ),
                        get_the_author(),
                        get_the_author_meta('user_title')
                    );
                ?>

问题是并非所有用户都有标题。在这些情况下,如何摆脱挂起的逗号(在%6 $ s和%7 $ s之间)?请意识到我不知道php。我只是复制/粘贴并调整一下。所以我真的需要一个明确的解决方案。

2 个答案:

答案 0 :(得分:0)

不确定,但我认为你可以将逗号移动到参数并使用内联条件来检查它是否为空。像这样的东西。虽然我不确定这是否有效。值得一试。

<?php
                    printf( __( '<span class="meta-prep meta-prep-author screenreader">Posted on </span><a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s" pubdate>%3$s</time></a> <span class="meta-sep"> by </span> <span class="author vcard"><a class="url fn n" href="%4$s" title="%5$s">%6$s %7$s</a></span>', 'ngngcustom' ),
                        get_permalink(),
                        get_the_date( 'c' ),
                        get_the_date(),
                        get_author_posts_url( get_the_author_meta( 'ID' ) ),
                        sprintf( esc_attr__( 'View all posts by %s', 'ngngcustom' ), get_the_author() ),
                        get_the_author(),
                        ((get_the_author_meta('user_title') != '') ? ', '.get_the_author_meta('user_title') : '')
                    );
                ?>

答案 1 :(得分:0)

试试这个。摆脱printf中的逗号并添加此代码:

$author_title = get_the_author_meta('user_title');
if (0 < strlen($author_title)) {
  $author_title = ', '.$author_title;
} else {
  $author_title = '';
}
printf( __( '<span class="meta-prep meta-prep-author screenreader">Posted on </span><a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s" pubdate>%3$s</time></a> <span class="meta-sep"> by </span> <span class="author vcard"><a class="url fn n" href="%4$s" title="%5$s">%6$s %7$s</a></span>', 'ngngcustom' ),
                    get_permalink(),
                    get_the_date( 'c' ),
                    get_the_date(),
                    get_author_posts_url( get_the_author_meta( 'ID' ) ),
                    sprintf( esc_attr__( 'View all posts by %s', 'ngngcustom' ), get_the_author() ),
                    get_the_author(),
                    $author_title
                );
?>