2017-12-21 10 views
0

우리는 Wordpress mutlisite를 보유하고 있습니다. Google은 Wordpress 사용자로 승인 된 재판매 업체를 보유하고 있으며 누구도 액세스 할 수없는 마케팅 자료에 액세스 할 수있는 특정 사이트에 구독자로 지정됩니다. 나는 이것을 Wordpress Network Admin (탭) -> Users (탭)에서 확인했다. 우리에게는 별도의 마케팅 자료가있는 두 개의 사이트가 있으며 각 사용자는 하나의 사이트에만 할당됩니다.Wordpress Multisite 가입자에게 할당되지 않은 사이트의 콘텐츠에 대한 액세스를 제한하십시오.

마케팅 자료에 액세스하려면 사용자는 파트너 페이지로 이동하고 마케팅 페이지로 연결되는 링크가있는 버튼이 있습니다. 사용자가 로그인 한 사용자인지 여부에 따라 버튼의 링크가 동적으로 생성됩니다. 로그인 한 사용자 인 경우 링크가 마케팅 페이지로 이동하고 그렇지 않으면 링크가 등록/로그인 페이지로 이동합니다.

우리는 최근 로그인 한 사용자가 할당 된 사이트에 관계없이 두 사이트의 마케팅 자료에 액세스 할 수 있음을 발견했습니다. 현재 마케팅 자료 페이지에 갈 수없는 유일한 사람들은 로그인하지 않은 사람들입니다.

코드를 이해하면 페이지에 로그인 한 사용자가 있는지 확인하는 것입니다. 그 (것)들에게 매매 페이지를위한 단추에서 연결을주십시오.

고급 맞춤 필드를 사용하여 버튼의 두 가지 링크를 만드는 데 도움이되도록 페이지의 다른 필드에서 정보를 가져옵니다. 내가 필요로하는 코드가

<a href="<?php echo esc_url($left_link); ?>" class="btn">Login</a> 

확인이 :

  • 경우

    $portal_left_link = get_field('portal_left_link'); // the link for the marketing page 
    
    $register_global = get_field('register_login_link', 'option'); // trying to find this value 
    $register_override = get_field('register_url_override'); // trying to find this value 
    
    $register_login_link = (! empty($register_override)) ? $register_override : $register_global; // not sure yet what this does 
    $register_login_link .= '?redirect_to=' . $portal_left_link; // concatenates a redirect for the (button) link to the portal page to be carried over to the register/sign-in page for when the user needs signs-in 
    
    $left_link = is_user_logged_in() ? $portal_left_link : $register_login_link; // i think this says if the user is logged in then give them the portal link, otherwise give them the register/sign-in link 
    

    그리고 버튼을 코드로 끌어 : 여기에 삽입 된 링크를 설정하는 PHP는 로그인 한 사용자가 있습니다.

  • 사용자가 할당 된 사이트.
  • 사용자가있는 사이트는 사용자가 할당 된 사이트와 일치합니까?
  • 이러한 모든 명령문이 일치하는 경우 마케팅 페이지에 대한 링크를 삽입하십시오.
  • 그렇지 않으면 등록/로그인 페이지에 대한 링크를 삽입하십시오.
+0

내 대답 해당 사이트의 회원인지 여부에 따라 링크 표시/숨기기 요청 이미 링크가있는 사용자가 브라우저에 직접 붙여 넣을 수 있습니다. 이 마케팅 페이지에 대한 자세한 내용과 호스팅 방법에 대해 설명해 주시면 실제로 페이지를 보호하기위한 아이디어를 줄 수 있습니다. – kais

+1

마케팅 페이지를 변경할 수 있었기 때문에 로그인 한 사용자 만 해당 사이트에 할당 된 경우 바로 이동할 수 있습니다. 다시 한번 감사드립니다. 한 돌로 두 마리의 새가 생겼어. –

답변

0

사용자가이 방법으로 사이트의 구성원 인 경우 당신은 확인할 수 있습니다 https://codex.wordpress.org/Function_Reference/is_user_member_of_blog

그래서 코드는 다음과 같이 보일 수 있습니다 :로 해결할 수 아래

$portal_left_link = get_field('portal_left_link'); // the link for the marketing page 
if (is_user_logged_in() && is_user_member_of_blog()) // check if the user is logged in and a member of the blog 
{ 
    $left_link = $portal_left_link; 
    $left_link_text = "Go To Marketing Page"; 
} 
else 
{ 
    $register_global = get_field('register_login_link', 'option'); // trying to find this value 
    $register_override = get_field('register_url_override'); // trying to find this value 
    $register_login_link = (! empty($register_override)) ? $register_override : $register_global; // not sure yet what this does 
    $register_login_link .= '?redirect_to=' . $portal_left_link; // concatenates a redirect for the (button) link to the portal page to be carried over to the register/sign-in page for when the user needs signs-in 
    $left_link = $register_login_link; 
    $left_link_text = "Login"; 
} 
// code for button 
<a href="<?php echo esc_url($left_link); ?>" class="btn"><?php echo $left_link_text; ?></a> 
+0

그레이트! 문제에 대한 완벽한 솔루션. 해결 됐어. –