2016-08-02 5 views
1

그래서 게시물을 PDF로 변환 할 내 WordPress 게시물에 단추를 갖고 싶습니다. domPDF를 찾았지만 WordPress로 구현하는 방법을 모르겠습니다.WordPress에서 domPDF를 사용하는 방법

나는 플러그인이 더 쉬울 것이라는 것을 알고 있지만, 플러그인이 없으면 그것을하고 싶다.

누군가 구현할 수있는 방법을 설명해 줄 수 있습니까? 감사합니다.

+0

관리 영역 또는 프론트 엔드에이 기능을 원하십니까? –

+0

@MatteoEnna forntend, 누구나 PDF 파일로 게시물을 다운로드 할 수 있습니다. – Kierenblade

답변

1

테마의 dompdf 디렉토리를 복사하십시오. 테마 디렉토리 삽입의 function.php에

:

function me_post_pdf(){ 
    if (isset($_POST['me_post_pdf'])){ 
     include 'dompdf-master/autoload.inc.php'; 
     global $wp; 
     $current_url = home_url(add_query_arg(array(),$wp->request)); 

     $html = file_get_contents($current_url); 

     $options = new Options(); 
     $options->set('A4','potrait'); 
     $options->set('enable_css_float',true); 
     $options->set('isHtml5ParserEnabled', true); 

     $dompdf = new DOMPDF($options); 
     $dompdf->load_html($html); 

     $dompdf->render(); 

     $dompdf->stream('title.pdf'); 
    } 
} 

add_action('init', 'me_post_pdf'); 

파일에 추가 single.php :

<form> 
    <input type="submit" value="click me"> 
    <input type="hidden" name="me_post_pdf" value="submitted"> 
</form> 

그것은 약간 cambire 테마의 자료

를 설치 할 수있다
+0

뛰어난 설명! 고맙습니다. 그냥 빠른 질문, 어떤 domPDF 파일을 포함시켜야합니까? autoload.inc.php? 왜냐하면 내가 포스트의 버튼을 클릭했을 때 아무 일도 일어나지 않는다. – Kierenblade

+0

autoload.inc.php :) –

+0

기본적으로 폼 메소드가 "get"으로 게시되도록 설정해야한다. –

4

당신은 질문이 매우 열려 있습니다. 일반적으로 스택 오버플로는 "이 코드 조각이 예상대로 작동하지 않는 이유는 무엇입니까?"와 같은 매우 특정한 것에 대한 질문을하기위한 것입니다. 또는 "[여기에 프로그래밍 언어 이름 삽입]에서 XYZ 작업을 수행하기 위해 사용해야하는 기능은 무엇입니까?

이렇게 말한 결과 - 우리는 때로 프로세스를 파악할 때 약간의 킥 스타트가 필요할 수 있습니다. 그래서 - 최선을 다해 당신의 질문에 대답 할 것입니다; 너무 구체적이지 않고 (어쨌든 나는 당신을 위해 당신의 일을하기 위해 여기에 있지 않습니다.)).

정말로 코드를 작성할 필요가 있습니까? : WordPress 게시물을 PDF로 변환하려는 경우 휠을 다시 발명하려고 할 수 있습니다.

그들은 할 수 있습니다 여기에 내가 구글 검색의 맨 위에 두 개의 플러그인 (내가 그들을 사용한 적이 있고, 완벽하게 문서를 읽을하지 않은 경우)입니다 당신이 원하는 것을 정확히 코딩 할 수 있습니다.

"방금 플러그인을 사용하고 싶지 않다고 말했습니다." 괜찮습니다. 그러나이 경우에주의 깊게 밟도록 경고합니다. WordPress는 플러그인을 사용하여 다양한 기능을 확장합니다.

당신은 테마의 functions.php 파일을 통해 추가 기능을 추가하거나 자식 테마를 만들고 거기에 변경 사항을 추가 할 수 있습니다; 그러나이 기능에는 추가하려는 기능 유형에 대한 여러 가지 단점이 있습니다.

일반적으로 무언가를 크게 변경하려는 경우 (예,이 경우 - 당신은 WordPress가 원래 의도하지 않은 새로운 것을 추가하고 있습니다) - 그런 다음 이것을 플러그인.

변경 사항이 적고 기본 설정이 변경된 경우 (즉, 루프 내부의 게시물 정렬 순서를 변경하는 경우) 테마의 functions.php 파일에 추가하는 것이 좋습니다.

추가 할 항목 - 특정 테마를 변경하는 경우 테마의 functions.php에도 추가 할 수 있습니다. 예외 - 당신이 직접 테마를 쓰지 않았다면, 플러그인을 사용하거나 자식 테마를 만들어야합니다.

확인 - 헤드 감사합니다. 이제 대답 해줘. 플러그인을 작성하거나, 하위 테마를 작성하거나, 기본 테마를 수정하는 옵션 중 어느 것을 선택하든간에 필요한 것을 달성하기위한 핵심 단계는 거의 동일합니다.

// EXAMPLE TAKEN FROM https://github.com/dompdf/dompdf 
// reference the Dompdf namespace 
use Dompdf\Dompdf; 

// instantiate and use the dompdf class 
$dompdf = new Dompdf(); 
$dompdf->loadHtml('hello world'); 

// (Optional) Setup the paper size and orientation 
$dompdf->setPaper('A4', 'landscape'); 

// Render the HTML as PDF 
$dompdf->render(); 

// Output the generated PDF to Browser 
$dompdf->stream(); 

당신이가는 곳 $dompdf->loadHtml('hello world');가 말한다 코드의 조각 :

당신이 DOMPDF의 설명서와 함께 자신을 익숙하게 한 가정, 당신은 그것을 생성 PDF 문서를 얻기 위해 매우 간단하다고 알고 있습니다 HTML 마크 업을 삽입하고 싶습니다.

이 단계에서 가장 쉬운 방법은 DomPDF의 loadHtml 함수에 전달할 템플릿을 만드는 것입니다. 템플릿에는 게시물의 제목과 내용이 포함됩니다.

작성한 코드는 변환하려는 게시물의 인스턴스 내부에서 실행됩니다 (이 코드가 의미가 없으면 WordPress Codex을 살펴 보시기 바랍니다).

지금이 모든 것을 통해 읽기 및 경우
// DomPDF will have already been initialised at this point in the code. 

// Create a function that DomPDF can reference, for ease. 
function grabPost() { 

// Hook into loop (don't just copy and paste this. Read the codex!) 
global $post; 

// Creating a really simple template to pass to DomPDF 
$title = '<h1>'.$post->post_title.'</h1>'; 
$content = '<article>'.$post->post_content.'</article>'; 

$passing = $title.$content; 

return $passing; 
} 

// Pass our generated template into DomPDF 
$dompdf->loadHtml(grabPost()); 

// Rendering PDF and outputting to browser happens below this line 

가 나는 지식에 칫솔질 시간을 보내고 조언을 것 "정말 혼동하고있어"생각 : 다음은 일을 고려해 볼 수 있습니다 무언가의 예입니다 WordPress의 구조 약간의 시간과 실험을하십시오.

이 정보가 도움이 되었기를 바랍니다. :)

+0

Alex에게 매우 유용한 정보가있다. 확실히 내 워드 프레스 지식에 브러시 :) – Kierenblade

+0

당신은 오신 것을 환영합니다 :) –