WordPress:如何在回显中使用post_class()

时间:2014-07-14 作者:user2248612

我正在Wordpress中处理foreach循环,希望将“post\\u class()”添加到其中的div中。当前代码如下所示:

if ( is_array( $posts ) && !empty( $posts ) ) {

    echo \'<ul class="tribe-related-events tribe-clearfix hfeed vcalendar">\';
    foreach ( $posts as $post ) {
        echo \'<li>\';
            echo \'<div class="overlay">\';
                echo   \'<div \'. post_class() .\'>\'; 
                echo        \'<h3>\'. tribe_get_event_taxonomy() .\'</h3>\';
                echo    \'</div>\';
            echo \'</div>\';
        echo \'</li>\';
    }
    echo \'</ul>\';
}
“post\\u class()”函数正在断开它所在的div,并调用这些类,就像它们是页面中的内容一样。

有什么想法吗?

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

解决方案实际上没有我最初想象的那么复杂。post\\u class()函数不返回字符串,而是“回显”字符串。因此,当你写作的时候。

echo \'<div \' . post_class() . \'>\'; 
其影响如下:

首先,系统执行post\\u class(),生成一个“echo…”使用类attributesecond,系统进行请求的串联并回显文本“”。

正确的使用方法是:

echo "<div ";
post_class();
echo ">";
否则:

echo \'<div class="\'. join( \' \', get_post_class() ) .\'">\';

SO网友:kaiser

这个post_class() 函数只是get_post_class().

请记住,后者不会echo, 但返回Array 所以你必须做些什么post_class() 是否:

$classes = join( \'  \', get_post_class() );
您的代码(可能)如下所示。我改变了if 首先检查是否$posts 为空,然后检查它是否是一个数组-这是一个更安全的数组。

if (
    ! empty( $posts )
    AND is_array( $posts )
    )
{
    $items = array();
    foreach ( $posts as $post )
        $items[] = sprintf(
            \'<li><div class="overlay"><div class="%s"></div><h3>%s</h3></div></div></li>\',
            join( \'  \', post_class() ),
            tribe_get_event_taxonomy()
        );

    ! empty( $items ) AND printf(
        \'<ul class="tribe-related-events tribe-clearfix hfeed vcalendar">%s</ul>\',
        join( \'\', $items )
    );
}

结束

相关推荐

包装类:如何摆脱CALL_USER_FUNC_ARRAY()警告?

我已经安装了好几个wordpress,现在我正在尝试创建自己的小框架,以便更有效地创建和维护我的主题。我想做的是为wordpress提供的挂钩提供一个包装。我想在我的应用程序中调用这样的挂钩$_addThumb = function(){ add_theme_support(\'post-thumbnails\'); }; $core->registerAction(array(\'tag\' => \'after_theme_setup\',