我正在尝试使用以下代码来检查用户是否具有某个成员级别,然后是否在wp网络上有博客。如果他们通过了这两个检查,那么一个链接被回显,如果他们没有通过第一个if if检查然后另一个链接被回显。此外,我试图检查他们是否通过第一个但是第二个失败,然后回显一个不同的链接。这是我现在的代码 -
<?php
if(pmpro_hasMembershipLevel(array(2,4))) {
if(current_user_can( 'edit_posts' )) {
global $current_user;
$blogs = get_blogs_of_user( $current_user->id );
if($blogs) {
foreach ( $blogs as $blog ) {
if($blog->userblog_id != 1) {
echo '<li><a href="http://' . $blog->domain . $blog->path .'wp-admin/">My Site</a></li>';
} else {
echo '<li><a href="/register-site/">Register your Site</a></li>';
}
}
}
}
} else {
echo '<li><a href="/membership-levels/">UPGRADE</a></li>';
}
?>
上面的代码在它假设时回显了注册链接,但是当用户有博客时,注册链接不应显示,但现在它显示在我的网站链接旁边。有什么想法吗?
修改 的
免费用户可以看到UPGRADE链接
没有网站的高级用户会看到REGISTER链接(2,4的成员资格数组是他们必须是其中之一的级别)
拥有网站的高级会员将看到“我的网站”链接。
修改 的
我能够使用print_r并在页面上,它可以回显寄存器链接 - Array([1] =&gt; stdClass Object([userblog_id] =&gt; 1 [blogname] =&gt; mysite。 com [domain] =&gt; mysite.com [path] =&gt; / [site_id] =&gt; 1 [siteurl] =&gt; https://mysite.com [archived] =&gt; 0 [spam] =&gt; 0 [删除] =&gt; 0))
答案 0 :(得分:1)
查看Wordpress MU文档,我猜想get_blogs_of_user
总是返回一个数组,因此检查$blogs
的值是否总是会返回true。在下面的代码中,我建议用检查替换对值的存在的简单检查,以确定返回的值是否为数组,如果是,则确定它是否包含元素:
<?php
if (pmpro_hasMembershipLevel(array(2,4))) {
if (current_user_can( 'edit_posts' )) :
global $current_user;
$blogs = get_blogs_of_user( $current_user->id );
/*Check if we got an array back and, if so,
check if it has elements*/
if ( is_array($blogs) && ( count($blogs) > 0 ) ) {
foreach ( $blogs as $blog ) :
if($blog->userblog_id != 1) {
echo '<li><a href="http://' . $blog->domain
. $blog->path
.'wp-admin/">My Site</a></li>';
}
endforeach; // end foreach loop
} else {
echo '<a href="/register-site/">Register your Site</a>';
} // end if $blogs
endif; // endif current_user_can
} else {
?>
<div>UPGRADE</div>
<?php
}
?>
答案 1 :(得分:0)
试试这个:
<?php if(pmpro_hasMembershipLevel(array(2,4))) {
if(current_user_can( 'edit_posts' )) {
global $current_user;
$blogs = get_blogs_of_user( $current_user->id );
if($blogs) {
foreach ( $blogs as $blog ) {
if($blog->userblog_id != 1) {
echo '<li><a href="http://' . $blog->domain . $blog->path .'wp-admin/">My Site</a></li>';
}
}
} else {
echo '<a href="/register-site/">Register your Site</a>';
}
}
} else { ?>
<div>UPGRADE</div>
<?php } ?>
答案 2 :(得分:0)
给这个人一个机会。即使它在当前状态下不起作用,也应该更容易看到逻辑并弄清楚什么不能正常工作。
编辑:无耻地偷走@JustinPearce检查用户是否有来自his answer
的博客的方法<?php
global $current_user;
$blogs = get_blogs_of_user( $current_user->id );
// print_r($blogs);
$has_membership_level = pmpro_hasMembershipLevel(array(2,4));
$has_blog = ( current_user_can('edit_posts') && is_array($blogs) && count($blogs) > 0 );
$registerLink = '<a href="/register-site/">Register your Site</a>';
$upgradeLink = '<div>UPGRADE</div>';
function echoBlogLinks($blogs) {
echo '<ul>';
foreach ( $blogs as $blog ) {
if($blog->userblog_id != 1) {
echo '<li><a href="http://' . $blog->domain . $blog->path .'wp-admin/">My Site</a></li>';
}
}
echo '</ul>';
}
if ($has_membership_level) {
if ($has_blog) {
echoBlogLinks($blogs);
} else {
echo $registerLink;
}
} else {
echo $upgradeLink;
}