在一个函数中使用多行变量?

时间:2013-03-01 作者:Jacob Rambo

我正在使用评论系统向所有用户添加一条只有他们才能看到的私人留言,我正在使用wordpress评论系统来做到这一点。我编写了一个函数,用一个短代码调用登录用户的评论,以显示在他们的个人资料页面上。我可以在不通过变量的情况下让它工作,但它总是显示在页面的顶部。我似乎无法在函数中调用这些变量。我得到的只是一张空白页。请看一看,告诉我我做错了什么。

function notes_by_comments() {

global $wpdb;

$current_user = wp_get_current_user();

$note_content = \'<h5 style="border-bottom: 1px solid #DADADA; padding-bottom: 7px;padding-top: 25px;"><strong>Notes</strong></h5>\';

$commentQuery = "SELECT * from $wpdb->comments WHERE user_id=$current_user->ID ORDER BY   comment_date DESC LIMIT 0 ,5";

$comments = $wpdb->get_results($commentQuery);
foreach ($comments as $comment) {

$note_content. = \'<li><b>Note for</b> <a href="\'. get_permalink($comment- >comment_post_ID). \'#comment-\'.$comment->comment_ID .\'">\';
$note_content. = get_the_title($comment->comment_post_ID) . \'</a> -\'; 

 if(get_post_type( $comment->comment_post_ID ) === \'for_sale_listings\'){
 $note_content. =  "<b>Sale Listing</b>";
} elseif (get_post_type( $comment->comment_post_ID ) === \'rental_listings\'){
$note_content. = "<b>Rental Listing</b>";
} elseif (get_post_type( $comment->comment_post_ID ) === \'roomate_share\'){
$note_content. = "<b>Roommate Share</b>";
}

$note_content. = \'<p>\' . $comment->comment_content . \'</p></li>\';

return $note_content;

} 
}

add_shortcode(\'notes\', \'notes_by_comments\'); 

2 个回复
最合适的回答,由SO网友:jfacemyer 整理而成

可能是因为您未正确使用串联赋值运算符:

$note_content. =

应该是

$note_content .=

http://php.net/manual/en/language.operators.string.php

SO网友:Ralf912

我重新格式化了你的代码。请始终使用$wpdb->prepare() 用于SQL查询。这个switch-case 如果elseif elseif elseif elseif tadada是一个更好的解决方案。

我没有测试代码,我没有你数据库的副本,但你把return 内部foreach 环也许这就是错误所在。

<?php
function notes_by_comments() {

    global $wpdb;

    $current_user = wp_get_current_user();
    $note_content = \'<h5 style="border-bottom: 1px solid #DADADA; padding-bottom: 7px;padding-top: 25px;"><strong>Notes</strong></h5>\';

    $commentQuery = $wpdb->prepare(
        \'SELECT * from $wpdb->comments WHERE user_id=%d ORDER BY %s DESC LIMIT 0 ,5\',
        $current_user->ID,
        comment_date
    );

    $comments = $wpdb->get_results( $commentQuery );

    foreach ( $comments as $comment ) {
        $note_content = \'\';

        $note_content .= sprintf( \'<li><b>Note for</b> <a href="%s#comment-%d">\',
            get_permalink( $comment->comment_post_ID ),
            $comment->comment_ID
        ); 

        $note_content .= get_the_title( $comment->comment_post_ID ) . \'</a> -\'; 

        switch ( get_post_type( $comment->comment_post_ID ) ) {

            case \'for_sale_listings\':
                $note_content .=  "<b>Sale Listing</b>";
                break;

            case \'rental_listings\':
                $note_content .= "<b>Rental Listing</b>";
                break;

            case \'roomate_share\':
                $note_content .= "<b>Roommate Share</b>";
                break;

            default:
                $note_content .= \'\';
        }

        $note_content .= sprintf( \'<p>%s</p></li>\', $comment->comment_content );

    }

    return $note_content;

}

add_shortcode( \'notes\', \'notes_by_comments\' ); 
具有缩进的格式良好的代码总是用于查找错误。

结束

相关推荐

Using shortcodes in PHP

我试图在我的页面中使用短代码,我从一个简单的测试开始。在里面functions.php:function HelloWorldShortcode() { return \'<p>Hello World!</p>\'; } add_shortcode(\'helloworld\', \'HelloWorldShortcode\'); 在中index.php:[helloworld] 这不会产生<p>Hello World