결론 코드부터
- 루트 경로에 아이콘을 직접 업로드 하고
functions.php에 아래 코드를 넣고- 아래 코드의
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.)
때문에 올바르게 워드프레스 내장 기능과 연동되면서 목적을 달성하려면 저런식으로 하면 된다.