WordPress의 plugins_url() 함수가 공유 호스팅에서 작동하지 않습니다.
내가 만든 사이트는 고급 사용자 지정 필드 플러그인을 사용하며, 내 웹 호스트의 localhost에서 모든 것이 제대로 작동합니다.유감스럽게도 사이트를 클라이언트가 구입한 호스팅(GoDaddy 공유 호스팅)으로 이동했을 때 Advanced Custom Fields 플러그인용 JavaScript 파일과 CSS 파일이 제대로 로드되지 않았습니다.소스를 확인하면 문제가 해결됩니다.이러한 문제는 다음 경로를 가리키고 있습니다.
(자세히 보면 URL이 아닌 서버상의 파일의 실제 경로에 대한 참조가 있음을 알 수 있습니다.)
플러그인의 다음 행까지 문제를 추적했습니다.
$this->dir = plugins_url('',__FILE__);
그것은 돌아올 것이다./wp-content/plugins/advanced-custom-fields
대신 다시 돌아오고 있다./wp-content/plugins/home/content/06/10145906/html/wp-content/plugins/advanced-custom-fields
올바른 경로를 가리키도록 플러그인 파일을 편집했지만 플러그인이 업데이트될 때마다 변경 내용이 복구되기 때문에 장기적인 해결책은 아닙니다.
나는 몇몇 사람들이 불평하는 것을 봐왔다.__FILE__
심볼링크에서는 매직 상수가 예상대로 작동하지 않지만 심볼링크는 확실히 작성하지 않았습니다.이게 GoDaddy 사용에 대한 제한인가요?
갱신하다
눈치 챘다__FILE__
GoDaddy에서 로컬머신이나 다른 웹 서버와는 다른 것을 반환합니다.동작하고 있는 2대의 머신 중 1대는, 파일 시스템의 루트에서 풀 패스를 반환합니다(즉,/srv/www/sitename/public_html/file.php
GoDaddy에서 반환되는 경로는 홈디렉토리에서 시작됩니다( )./home/content/06/10145906/html/file.php
).
그게 문제일까요?
Wordpress Codex에 따르면
You can either specify the $path argument as a hardcoded path relative to the plugins directory, or conveniently pass __FILE__ as the second argument to make the $path relative to the parent directory of the current PHP script file.
그래서 사용하다
plugins_url( basename( __DIR__ ) . '/path/to/plugin/asset.js' );
대신
plugins_url( '/path/to/plugin/asset.js', __FILE__ );
적절한 회피책입니다.특정 기술만큼 민첩하지 않을 수 있습니다.__FILE__
그래도.
다음 작업을 수행할 수 있습니다.
$this->dir = dirname(__FILE__);
새로운 버전의 PHP 를 실행하고 있는 경우는,
$this->dir = __DIR__;
서버 이동으로 인해 이 문제가 갑자기 발생한 것 같습니다.
WordPress 설정 페이지를 확인하여 이동 후 WordPress URL이 새 URL을 반영하는지 확인합니다.
WordPress의 상수 중 하나(WP_PLUGin_URL 또는 WP_PLUGIN_URL)가 모두 맞다면 WordPress의 상수 중 하나 또는 WP_PLUGIN_URL을 설정하는 데 사용되는 전구체 상수 중 하나)를 덮어쓰고 있는 것입니다.그것을 찾는 장소는 wp-config.php 파일에 있습니다.
현재 이 있을 이 있습니다(버전에서는 ).는 "인 "PHP" 를 반환합니다항상 다음의 "물리적" 주소를 반환합니다.__FILE__
에 이 및알 수 , 이반환하는 변경하고 합니다.왜 PHP에 이 동작을 변화시키기 위한 셋업이 없는지(그리고 PHP 개발자)는 알고 있지만, WP는 그 경로를 URL과 비교하면서 URL의 "나머지"를 반환하는 정상적인 동작을 변경하고 대신 전체 경로를 반환합니다.
에게 Codex 사용을 하는 한 는 잘 합니다.__FILE__
디스크 수준에서 수행된 심볼 링크를 끊지 않는 다른 방법이 있을 때 라이브러리를 로드하기 위한 URL 경로를 생성합니다.
이것으로 문제가 해결됩니다.
define('WP_CONTENT_DIR', realpath($_SERVER['DOCUMENT_ROOT'] . '/wp-content'));
언급URL : https://stackoverflow.com/questions/14391522/wordpresss-plugins-url-function-not-working-on-shared-hosting
'programing' 카테고리의 다른 글
Angulargular Js:지정된 월 번호의 월 이름 표시 (0) | 2023.02.28 |
---|---|
Angular 실행 방법페이지 로드 시 JS 컨트롤러 기능이 있습니까? (0) | 2023.02.28 |
AppBar vs ToolBar가 뭐죠? (0) | 2023.02.28 |
Angular JS태그 값 변환(시간을 사람이 읽을 수 있는 시간으로 변환) (0) | 2023.02.28 |
오래된 CMS/블로그 웹사이트는 어떻게 됩니까? (0) | 2023.02.28 |