在帖子下方显示带有指向最终会员资料/Wordpress用户资料的链接的ACF字段(单一帖子布局)

时间:2021-04-27 作者:023023

我正在使用高级自定义字段,并试图在单个帖子下方显示自定义字段。我设法让代码在帖子下面呈现,但当我设置字段时movie_actors 然后保存,刷新后整个页面变为空白,虽然我已经启用了调试模式,但它不会在屏幕上显示任何错误。我的字段设置为User Object 在ACF内部,字段类型为user.我想做的是在Ultimate Member中显示一个指向用户配置文件的链接。为了以防万一,我还尝试显示一个指向默认wordpress用户配置文件的链接,它也给出了相同的结果。

我在我的自定义函数插件(相当于functions.php)中这样做。

我将把这两个代码都留在这里,以防万一:

这是一个终极成员插件:

function wpb_after_post_content($content){ if (is_single()) { 
global $post;

$content .= \'<p>CAST</p>\' .

\'<div id="meta-coauthor"><span class="metacoauteur">\' .

        $values = get_field(\'movie_actors\', $post->ID); 
        if($values) { 
            foreach($values as $value)  {
                $author_ID = $value[\'ID\'];
                                um_fetch_user( $author_ID) . \'<a href="\'.um_user_profile_url( ).\'">\' . um_user("display_name") . \'</a>\';
            }   
        }; 
    \'   </span>
</div>\';

 }
    return $content;
}
add_filter( "the_content", "wpb_after_post_content", 9999 );
add_theme_support( \'post-thumbnails\' );
set_post_thumbnail_size( 100, 50, true );
这是默认Wordpress用户配置文件:

function wpb_after_post_content($content){ if (is_single()) { 
global $post;

$content .= \'<p>CAST</p>\' .

 \'<div id="meta-coauthor"><span class="metacoauteur">\' .

        $values = get_field(\'movie_actors\', $post->ID); 
        if($values) { 
            foreach($values as $value)  {
                $author_ID = $value[\'ID\'];
                $author_url = esc_url( get_author_posts_url($author_ID) ) . \' <a href="\'.$author_url.\'">\' . $value[\'display_name\'] . \'</a>\';
              
            }   
        }; 
    \'   </span>
</div>\';


 }
    return $content;
}
add_filter( "the_content", "wpb_after_post_content", 9999 );
add_theme_support( \'post-thumbnails\' );
set_post_thumbnail_size( 100, 50, true );

1 个回复
最合适的回答,由SO网友:Steck Insights Web Design 整理而成

我认为您在foreach循环中设置的变量的语法是错误的。由于引用的是对象而不是数组,因此需要使用以下格式:

$author_ID = $value->ID
还有。。。

$value->display_name
我们还发现foreach循环不是必需的,所以我将其从答案中删除。

另一个问题是如何传递内容。也许是我缺乏经验,但我发现更容易参考$“内容”;更多的时候,我会附加更多的变量。你试图在整个论点中把它联系起来,虽然这让我更加困惑,但它也不起作用(这就是造成空白页的原因)。

尝试以下操作:

function wpb_after_post_content($content){ if (is_single()) {
    global $post;

    $content .= \'<p>CAST</p>\' .

        \'<div id="meta-coauthor"><span class="metacoauteur">\';

        $actor_obj = get_field(\'movie_actors\', $post->ID);

    echo \'<pre>\';
    var_dump($actor_obj);
    echo \'</pre>\';

    if($actor_obj) {
            $author_ID = $actor_obj->ID;
            $author_url = esc_url( get_author_posts_url($author_ID) );
            $content .= \' <a href="\'.$author_url.\'">\' . $actor_obj->display_name . \'</a>\';
    };
    $content .=\'   </span>
</div>\';


}
    return $content;
}
add_filter( "the_content", "wpb_after_post_content", 9999 );
add_theme_support( \'post-thumbnails\' );
set_post_thumbnail_size( 100, 50, true );
如果对你有用,请告诉我。

我没有Ultimate成员,因此无法测试该代码,但如果您在默认的WordPress屏幕上运行该代码,那么就不远了。