워드프레스 Site icon 경로 직접 등록

결론 코드부터

  1. 루트 경로에 아이콘을 직접 업로드 하고
  2. functions.php 에 아래 코드를 넣고
  3. 아래 코드의 site-logo.png 부분을 본인의 아이콘으로 변경하면 끝
// Override site icon URL with root path . hardfilter.com
function override_site_icon_url($url) {
    // 루트에 업로드한 아이콘 URL로 변경
    return home_url('/site-logo.png');
}
add_filter('get_site_icon_url', 'override_site_icon_url');
  • get_site_icon_url 필터를 등록해 기본 설정 된 아이콘의 경로를 $url 인자로 받고(미설정시 false 를 받음)
  • 그걸 수정한 URL 값으로 하이재킹해서 돌려줌

코드 써야하는 이유

워드프레스 내장 기능(Settings → General) 으로 Site Icon 을 등록하려면 미디어로 업로드해서 등록 할 수 밖에 없다(Appearance → Customize 로 테마 기능으로 넣어도 결과는 같음).

즉 icon 의 경로가 html 상 <link rel="icon" href="https://example.com/wp-content/uploads/site-logo.png"> 이런 식으로 표현됨.

이걸 정삭적으로 <link rel="icon" href="https://example.com/site-logo.png"> 처럼 표현되게 하려면 저 코드를 쓰면 된다.

그냥 기본 기능으로 아이콘을 등록하지 않고 직접 header.php 를 하드코딩 할 수도 있다.

그러나 이렇게 하면 워드프레스 내장 함수랑 맞물려서 작동하는 기능이 작동하지 않는다(e.g. Feed 페이지의 메타정보 삽입, etc.)

때문에 올바르게 워드프레스 내장 기능과 연동되면서 목적을 달성하려면 저런식으로 하면 된다.