次のコードを使用して、ユーザーが特定のメンバーレベルを持っているかどうかを最初に確認し、次に wp ネットワークにブログがあるかどうかを確認しようとしています。これらの両方のチェックに合格した場合、リンクがエコーされます。最初の if チェックに合格しなかった場合、別のリンクがエコーされます。また、最初に合格したかどうかを確認しようとしていますが、2番目に失敗した場合、別のリンクがエコーされます。これが私が今持っているコードです-
<?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>';
}
?>
上記のコードは、想定される場合に登録リンクをエコーしますが、ユーザーがブログを持っている場合、登録リンクは表示されるべきではありませんが、サイト リンクの横に表示されるようになりました。何か案は?
編集
無料ユーザーにはアップグレード リンクが表示されます
サイトのないプレミアム ユーザーには、REGISTER リンクが表示されます (メンバーシップ配列 2,4 は、いずれかでなければならないレベルです)。
サイトを持つプレミアム メンバーには、MY SITE リンクが表示されます。
編集
print_r を使用することができ、登録リンクをエコーすると思われるページで -- Array ( [1] => stdClass Object ( [userblog_id] => 1 [blogname] => mysite.com [domain] => mysite.com [パス] => / [site_id] => 1 [siteurl] => https://mysite.com [アーカイブ済み] => 0 [スパム] => 0 [削除済み] => 0 ) )