홈페이지 » WordPress » 비 WordPress 웹 사이트에 WordPress 사이드 바를 표시하는 방법

    비 WordPress 웹 사이트에 WordPress 사이드 바를 표시하는 방법

    DevGrow Discussions라는 최신 프로젝트를 진행하면서 필자는 비 워드 프레스 사이트에 내 전체 WordPress 사이드 바를 포함 시키십시오. - 구체적으로 bbPress 포럼. 인기있는 게시물 및 기타 동적 컨텐츠를 표시하기 위해 다양한 위젯을 사용하기 때문에 단순히 HTML을 복사하여 붙여 넣기만으로는 충분하지 않습니다. 결국이 문제를 해결할 수있는 방법은 실제로 두 가지뿐입니다.

    1. 당신의 것을 포함 시키십시오. wp-load.php 파일을 응용 프로그램에 넣고 실제로 WordPress 전체를로드하여 플러그인 기능에 액세스하십시오.
    2. 간단한 캐싱을 사용하여 사이드 바를 HTML 형식으로 저장하고 다른 응용 프로그램에 포함시킨 다음 새 내용이 게시 될 때 필요에 따라 다시 작성합니다.

    충분히 명확하지 않은 경우 첫 번째 옵션은 데이터베이스 쿼리 측면에서 비용이 많이 들고 사이트를 상당히 느려질 수 있습니다. 두 번째 옵션은 구현에 약간의 노력이 필요하지만 성능면에서는 경쟁이 없다는 것이 현명합니다.

    WordPress 사이드 바 캐싱

    우리가 우리의 기능을 기술하기 전에, 우리가하려고하는 것을 정확히 이해할 필요가 있습니다. 우리의 목표는 사이드 바를 텍스트 파일에 캐시하십시오.게시물을 게시 할 때마다 캐시를 ​​업데이트하십시오., 테마를 변경하거나 사이드 바 위젯을 변경하십시오. 다른 응용 프로그램에서 사이드 바를 표시하기 위해 캐시를 사용할 계획이므로 아무런 부작용없이 캐시를 쉽게 삭제할 수 있어야합니다 (사이드 바를 언제든지 깨지 않게해야 함).

    이를 효율적으로 수행하기 위해 캐시 된 파일의 로그를 작성하십시오.캐시를 지워야하는지 여부를 결정하는 데 사용합니다.. 그렇다면 누군가가 WordPress 사이트를 방문 할 때 실제 캐시 파일을 덮어 씁니다. 그러면 항상 두 응용 프로그램에서 항상 적절한 사이드 바가 렌더링됩니다..

    함수 만들기

    시작하려면 테마를 열어주세요. functions.php 파일을 만들고 다음 함수를 추가하십시오.

     함수 캐시 ($ task, $ cacheFile, $ cacheTime = 21600) global $ cache; // 파일과 디렉토리를 설정합니다 : $ cacheDir = TEMPLATEPATH. "/ cache"; $ cacheFileName = $ cacheDir. "/ cache- $ cacheFile.txt"; $ cacheLogFile = $ cacheDir. "/ cache-log.txt"; // 존재하지 않으면 캐시 디렉토리 만들기 if (! is_dir ($ cacheDir)) mkdir ($ cacheDir, 0755); // (file_exists ($ cacheLogFile)) $ cacheLog = unserialize (file_get_contents ($ cacheLogFile)); // 현재 상태로 캐시 파일의 로그를 만듭니다. else $ cacheLog = array (); if ($ task == 'start') // 캐시가 존재하고 6 시간 미만이고 삭제 대기열에 없으면 유지하십시오. 그렇지 않으면 (file_exists ($ cacheFileName) && (time () - filemtime ($ cacheFileName)) < $cacheTime && $cacheLog[$cacheFile] == 1) $cache = false;  else  $cache = true; ob_start();  elseif($task == 'end' && $cache) // If caching, save file contents and update log file_put_contents($cacheFileName,ob_get_contents()); ob_end_flush(); $cacheLog[$cacheFile] = 1; file_put_contents($cacheLogFile,serialize($cacheLog)); elseif($task == 'purge') // Set cache to delete and update log $cacheLog[$cacheFile] = 0; file_put_contents($cacheLogFile,serialize($cacheLog));   function cache_purge() $cacheDir = TEMPLATEPATH."/cache"; $cacheLogFile = $cacheDir."/cache-log.txt"; if(file_exists($cacheLogFile)) $cacheLog = unserialize(file_get_contents($cacheLogFile)); else $cacheLog = array(); foreach($cacheLog as $key=>$ value) $ cacheLog [$ key] = 0; file_put_contents ($ cacheLogFile, serialize ($ cacheLog));  

    이러한 첫 번째 기능, 은닉처, 캐시를 작동시키는 열쇠입니다. 파일에서 호출하는 위치에 따라 함수는 올바른 파일 및 디렉토리를 설정하고 캐시를 작성해야하는지 확인한 다음 출력을 저장하고 캐시 로그를 업데이트합니다. 이 함수는 PHP의 출력 버퍼링을 사용하여 생성 된 HTML을 텍스트 파일로 저장합니다..

    두 번째 함수는 모든 캐시 파일을 제거하는 데 사용되며 기존 WordPress 후크에 추가하는 데 유용합니다. 이 기능을 사용하면 테마가 업데이트되거나 게시물이 저장되거나 사이드 바 위젯이 업데이트 될 때마다 캐시를 ​​지우도록 할 수 있습니다. functions.php:

     add_action ( 'switch_theme', 'cache_purge', 10); add_action ( 'publish_post', 'cache_purge', 10); add_filter ( 'widget_update_callback', 'cache_purge', 10); 

    후크의 전체 목록은 WordPress Plugin API Reference를 확인하십시오..

    사이드 바 구성

    이제 함수가 준비되었으므로 사이드 바를 캐싱 할 수 있습니다. 너를 열어 라. sidebar.php 이 줄을 파일의 시작 부분에 추가하십시오.

      

    이 함수는 필요한 사이드 바를 캐싱하기 시작합니다. 그렇지 않으면 아무것도 수행하지 않습니다. PHP 출력 버퍼링 함수가 작동하는 방식 때문에 파일 끝에 버퍼도 닫아야합니다. 이 줄을 같은 파일 맨 아래에 추가하십시오.

      

    이 두 줄을 추가 한 후 블로그를 새로 고칩니다. 브라우저에서 아무 것도 볼 수 없지만 /은닉처 디렉토리에 저장하면 두 개의 파일이 시작됩니다. 은닉처-.

    캐시 사용

    이제 캐시 파일을 만들었으므로 캐시 파일에 액세스 할 수있는 모든 응용 프로그램에서 사용할 수 있습니다. 당신은 쉽게 이것을 할 수 있습니다. include_once 기능이 있지만 파일이 존재하는지 확인하는 것, 안전하기 만 한 것도 좋습니다.

      

    파일 경로가 올바른지 다시 한 번 확인하십시오. 외부 애플리케이션에서 삭제하도록 캐시를 설정하려면 다음을 포함해야합니다. cache_purge 함수를 스크립트의 어딘가에 저장하고 필요할 때마다 호출하면됩니다. 그 후에 함수를 호출하기 만하면됩니다.

      

    결론

    이 기술은 PHP 응용 프로그램에서 특히 유용합니다. 특히 성능을 희생하지 않고도 동적 내용을 표시하고자 할 때 유용합니다. 워드 프레스 설치 속도를 높이거나 사이드 바 같은 유용한 비트를 다른 웹 사이트 또는 응용 프로그램에서 사용할 수있게하려면이 도구를 사용하십시오..

    편집자 주 : 이 게시물은에 의해 작성됩니다 몬줄 루 돌론 Hongkiat.com. Monjurul은 NYC 기반의 인터페이스 디자이너이자 웹 개발자로서 삶의 방식을 자유롭게 해줍니다. DevGrow.com의 블로그에서 웹 개발 및 디자인에 대한 팁과 리소스를 공유합니다..