0

我是 PHP World 的新手,我自定义了一个 WordPress 模板。

我在 php 文件中有以下函数:

function admired_posted_on() {
    printf( __( '<span class="sep">Posted on </span>
                 <a href="%1$s" title="%2$s" rel="bookmark">
                    <time class="entry-date" datetime="%3$s" pubdate>%4$s</time>

                 </a>

                 <span>BLABLA</span>
                 <span class="by-author"> 
                    <span class="sep"> by bla</span> 
                    <span class="author vcard">
                        <a class="url fn n" href="%5$s" title="%6$s" rel="author">%7$s</a>

                    </span>

                 </span>
                 ', 'admired' ),

    esc_url( get_permalink() ),
    esc_attr( get_the_time() ),
    esc_attr( get_the_date( 'c' ) ),
    esc_html( get_the_date() ),
    esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
    sprintf( esc_attr__( 'View all posts by %s', 'admired' ), get_the_author() ),
    esc_html( get_the_author() )
    );
    }

现在,我必须在printf正文中将以下 php 代码插入到BLABLA标记中,而不是“BLABLA”文本。这是我必须插入的 php 代码:

<?php echo '(' . get_PostViews(get_the_ID()) . ')'; ?>

如果我将 ithis 行插入到前一个 span 标签中,则会出错。

get_PostViews(get_the_ID()) 返回一个必须在该范围内显示的整数

有人可以帮助我吗?

4

2 回答 2

0

如果用单引号括起来'的字符串中有单引号,则必须转义该引号。像这样(注意\'):

$string = '<span class="sep">Posted on <?php echo \'(\' . get_PostViews(get_the_ID()) . \')\'; ?></span>... more content ....';

但在您的示例中,以下解决方案可能更简单:

$string = '<span class="sep">Posted on (<?php echo get_PostViews(get_the_ID()); ?>)</span>... more content ....';
于 2013-03-24T23:39:56.293 回答
0

这是您的功能的另一种方法。

function admired_posted_on() {
    printf( __( '<span class="sep">Posted on </span>
                 <a href="%1$s" title="%2$s" rel="bookmark">
                    <time class="entry-date" datetime="%3$s" pubdate>%4$s</time>
                 </a>
                 <span>%5$s</span>
                 <span class="by-author"> 
                    <span class="sep"> by bla</span> 
                    <span class="author vcard">
                        <a class="url fn n" href="%6$s" title="%7$s" rel="author">%8$s</a>
                    </span>
                 </span>
                 ', 'admired' ),

    esc_url( get_permalink() ),
    esc_attr( get_the_time() ),
    esc_attr( get_the_date( 'c' ) ),
    esc_html( get_the_date() ),
    get_PostViews(get_the_ID()),
    esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
    sprintf( esc_attr__( 'View all posts by %s', 'admired' ), get_the_author() ),
    esc_html( get_the_author() )
    );
}

附加答案:

要回答您的问题,如果您在一行中看到它可能会更容易。

printf('First Var: %1$s | Second Var: %2$s | Third Var: %3$s', $firstvar, $secondvar, $thirdvar);

%1$s 是在引用文本之后列出的后续变量的占位符。

相同的信息可以以相同的方式显示,但与原始帖子的间距不同

printf('First Var: %1$s | Second Var: %2$s | Third Var: %3$s', 
    $firstvar, 
    $secondvar, 
    $thirdvar
);

并且在文本前面添加下划线可以将文本翻译成多种语言(这是 Wordpress 内部的一个功能),并且带有“admired”的逗号仅表示受赞赏的主题标识符,它将在其中寻找翻译方法。

printf(__('First Var: %1$s | Second Var: %2$s | Third Var: %3$s', 'admired'), 
    $firstvar, 
    $secondvar, 
    $thirdvar
);
于 2013-03-25T04:06:50.017 回答