WordPress 함수에서 여러 Google 글꼴을 큐에 넣을 수 없는 이유는 무엇입니까?
사용하고 있다wp_enqueue_style이 Google Font 파일을 큐잉합니다.코드는 다음과 같습니다.
wp_enqueue_style( 'google-fonts', 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,700;1,400&family=Neuton:ital,wght@0,300;0,400;0,700;1,400&display=swap', [] );
이건 내 역할이야.php 파일.
그러나 로드된 페이지에서 소스를 보면 해당 글꼴 파일의 URL이 https://fonts.googleapis.com/css2?family=Neuton%3Aital%2Cwght%400%2C300%3B0%2C400%3B0%2C700%3B1%2C400&display=swap&ver=5.3.2로 잘립니다.
보시다시피 첫 번째 패밀리파라미터는 를 통해 출력된 후 삭제되었습니다.wp_enqueue_style해킹을 하지 않고 해결할 수 있는 방법이 있을까요?두 폰트 패밀리가 모두 사용할 수 있도록 URL을 만드는 구식 방법이 있을 수 있지만, 저는 지금 구글이 제공하는 것을 사용할 수 있기를 원합니다.내 원래 URL 내부wp_enqueue_styleGoogle 글꼴에서 생성한 URL입니다.
이것은 실제로 PHP와 쿼리 파라미터를 해석하는 방법과 관련이 있습니다.
https://www.php.net/manual/en/function.parse-str.php
어떤 경우에도 현재 해결 방법은 버전 매개 변수에 "null"을 전달하여 WordPress가 URL에 "ver"를 추가하지 않도록 하는 것입니다.
wp_enqueue_style( 'google-fonts', 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,700;1,400&family=Neuton:ital,wght@0,300;0,400;0,700;1,400&display=swap', [], null );
WordPress는 URL에 파라미터를 추가하지 않기 때문에 PHP의 쿼리 문자열 처리 기능을 통해 실행되지 않기 때문에 "null"을 종료하면 문제가 해소됩니다.
이 문제는 향후 WordPress 업데이트에서 보다 직접적으로 다루어질 수 있습니다.다만, 이러한 외부 URL 에 버전이 없는 것은, 어떠한 경우에도 의미가 있습니다.
동일한 쿼리 파라미터가 2회 정의됩니다(familyWordPress는 1개를 삭제합니다.이것은 일반적인 컨텍스트에서는 정상적인 것입니다.반복되는 쿼리 파라미터가 있는 경우 마지막 파라미터만 사용됩니다.WordPress는 URL을 큐잉할 때 이 "규칙"을 사용합니다.
구글 폰트가 왜 구문을 에서 변경했는지 설명할 수 없습니다.|세퍼레이터(예:https://fonts.googleapis.com/css?family=Montserrat|Neuton&display=swap)를 반복하여family파라미터는 URL에서 볼 수 있는 것처럼 복잡하기 때문일 수 있습니다.한 가지 확실한 것은 이것이 지금과 같은 문제를 일으킬 수 있다는 것입니다.이를 위해 WordPress를 조정하거나 Google 글꼴에서 URL 구문을 업데이트/복귀해야 합니다.오늘은 이런 일이 없을 거예요.
이 경우 Google 글꼴 탐색 모음에 있는 클래식 사이트를 사용하여 글꼴 URL을 작성하는 것이 좋습니다.그렇게 많은 옵션을 얻을 수 없다는 것을 알고 있기 때문에(가변 글꼴을 사용하려고 하는 것 같기도 하고!) 조금 아쉽습니다.
또는 파일을 다운로드하여 이러한 글꼴을 자체 호스트할 수 있습니다.많은 경우 성능 향상도 가능합니다.
언급URL : https://stackoverflow.com/questions/60953810/why-cant-i-enqueue-multiple-google-fonts-in-wordpress-functions-php
'programing' 카테고리의 다른 글
| Jest에서 조롱된 서비스로 인해 "The module factory of jest.mock() is not allowed to reference any of scope variables" 오류가 발생합니다. (0) | 2023.03.27 |
|---|---|
| tsc가 로컬파일에 대해 TS2307: Cannot find module을 슬로우합니다. (0) | 2023.03.27 |
| 무시하기 위한 Jquery Ajax 오류 처리 중단됨 (0) | 2023.03.27 |
| Oracle 테이블/컬럼/인덱스 이름이 30자로 제한되는 이유는 무엇입니까? (0) | 2023.03.27 |
| javascript에서 jQuery Mobile Dialog를 여는 방법 (0) | 2023.03.27 |