2013-07-15 2 views
-2

내 고객은 다른 사람들과 함께 자신의 학생용 온라인 퀴즈를 Wordpress 기반 웹 사이트에 추가하려는 대학 교수입니다. 그래서 나는 그 또는 모든 관리자가 관리자 페이지에서이 퀴즈를 만들 수있는 맞춤 플러그인을 만들고 있습니다. 이 모든 정보는 자체 테이블에 mysql 데이터베이스에 저장됩니다. 여기에 문제가 없습니다. 그것은 나가 잃어버린 블로그의 학생 또는 일정한 사용자에게 퀴즈를 보여줄 때이다.플러그인에서 데이터베이스의 동적으로 퀴즈 콘텐츠 생성

내가 원했던 것은이 퀴즈를 만드는 방법이었습니다. 처음에 나는 학생이하고자하는 퀴즈의 ID가 $_GET 인 매개 변수를 찾았지만 트릭을 수행 할 것입니다. 그렇다면 어디로 가야할까요? 나는 워드 프레스의 메인 디렉토리에서 별도의 PHP 파일을 사용해야 하나?

일반 구형 게시물을 만들고 단축 코드를 사용하여 코드를 붙여야합니까? 맞춤 게시물 유형을 사용해야합니까? (그러나 퀴즈가 이미 데이터베이스에 만들어졌으며 각 퀴즈가 과도하고 복잡해 보인다고 느낄 때마다 하나의 게시물, 사용자 정의 또는 규칙을 작성한다고 느낍니다. 심지어 단어 페이지를 동적으로 만들어 매개 변수를 전달할 수 있습니까?)

또는 루프 대신 (또는 다른 장소에서) 내 코드를 표시하기 위해 메인 페이지를 다시 쓰는 후크를 사용하는 방법이 있습니까? 아니면 내가 너무 멀어서 또 다른 방법이 있습니까?

+1

그것은 소리 :

그런 다음 당신은 실제로 엔드 포인트를 처리하는 기능을 가지고있다. 또한 무엇을하고 싶습니까? 데이터베이스에서 무언가를 선택하여 표시 하시겠습니까? – Callombert

+0

API의 작동 방식을 배우고 있기 때문에 첫 번째 인수에 대해 논쟁 할 수 없습니다. 내가 읽었던 것들이 내가해야 할 일에 특히 도움이되지 않는 것 같습니다. 적어도 조정할 필요는 없습니다. 어떻게 선택해야 하는지를 선택하고 표시하는 것이 아닙니다. 그러면 학생들은 퀴즈를 풀 수 있어야하며 그러면 플러그인은 메모/마크를 계산해야합니다. 하지만 먼저이 부분을 끝내야하며 그 부분이 내가 도움을 요청하는 곳입니다. 이 퀴즈를 어디에서 어떻게 볼 수 있는지 알아야합니다. – taotrooper

+0

데이터베이스에서 무언가를 선택하여 표시해야합니다. – Callombert

답변

1

사용자 지정 템플릿을 사용하는 것처럼 간단하게 수행 할 수 있습니다. 예를 들어, "Quiz"라는 페이지와 quiz.php라는 사용자 정의 템플리트를 작성하십시오. 해당 템플릿에서 검색어 문자열의 퀴즈 ID를 찾고 표시 할 수 있습니다.

if($_GET['quiz_id']){ 
/** code to retrieve and output the quiz */ 
} 
else{ 
/** code for them to select a quiz */ 
} 

맨손으로 접근합니다. 당신이 재 작성 엔드 포인트 API 같은 것을 사용할 수 야바위꾼 방법으로 작업을 수행하려면 (http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint)

은 그 예는 다음과 같습니다

/** add a custom function to the init hook */ 
add_action('init', 'my_custom_endpoint'); 


/** custom endpoint for handling forms */ 
function my_custom_endpoint(){ 
    add_rewrite_endpoint('forms', EP_ALL); 
    /** when pages are loaded, check to see if it's a form page and do something */ 
    add_action('template_redirect', 'process_form'); 
} 

EP_ALL 엔드 포인트 마스크 - 그것은 어디 워드 프레스를 알려줍니다 새 엔드 포인트를 적용하십시오. 페이지에만 적용 할 수도 있고, 게시물에만 적용 할 수도 있습니다.이 경우 모든 곳에서 끝점을 추가 할 수 있습니다. 이 작업을 수행 할 수있는 지식이없는 것처럼

function process_form(){ 
    global $wp_query; 
    /** check for your endpoint. A URL like site.com/forms/12 would set forms = 12 */ 
    if(isset($wp_query->query_vars['forms'])){ 
    /** the query var forms has a value, do something to show the form */ 
    echo get_form($wp_query->query_vars['forms']); 

    } 

} 
+0

그가 PHP를 모른다면, 나는 그가 기능을 이해하는 것을 정말로 보지 못한다 ...하지만, 어이, 왜 .. – Callombert

+0

@wunderdojo 정말 고마워! 그게 내가 필요한거야. 엔드 포인트로 요구 사항을 해결할 수 있었지만 잘 작동합니다. – taotrooper

+0

@taotrooper - 굉장하고, 듣기 좋게 기쁘다. – wunderdojo

관련 문제