스타일 시트없이 wp_add_inline_style 사용


18

만들고있는 사용자 지정 테마의 머리글에 사용자 지정 인라인 스타일을 추가해야합니다. 나는 wp_add_inline_style()작동하지만 특정 스타일 시트에 의존하기 때문에 실제로 적합하지 않은 기능을 발견했습니다. 스타일 시트 종속성없이 헤드 태그의 끝에 인라인 스타일을 추가해야합니다.

테마 스타일 시트 또는 존재하지 않는 스타일 시트를 설정하려고했습니다. 두 경우 모두 작동하지만 약간의 더러운 핵 IMO입니다 (테마 스타일 시트를 두 번로드하거나 유령 파일을 참조하십시오 ...). 스타일 시트에 의존하지 않고 인라인 스타일을 머리에 추가하는 적절한 방법이 있습니까?

물론 header.php 파일에 직접 추가 할 수는 있지만 이것을 피하고 싶습니다.

답변:


24

페이지 헤드에 직접 스타일을 추가하면됩니다. 이를 수행하는 가장 좋은 방법은 후크가있는 테마를 사용한다고 가정하고 'wp_head'조치 후크를 사용하는 것입니다. 이렇게 :

add_action('wp_head', 'my_custom_styles', 100);

function my_custom_styles()
{
 echo "<style>*{color: red}</style>";
}

동작 후크에 대한 자세한 내용은 WP 코덱 을 확인하십시오 .


문제 없어요! 기꺼이 도와 드리겠습니다.
SkyShab

(나처럼) 대시 보드 페이지에 사용자 지정 인라인 CSS를 추가하려는 경우 admin_head작업을 사용할 수 있습니다 .
그 브라질 사람

16

단순히 "더미"핸들을 사용할 수 있습니다.

wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );

wp_add_inline_style( 'dummy-handle', '* { color: red; }' );

내 스타일에는 핸들이 있고 마치 .css 파일에 포함 된 것처럼 큐에 들어 있기 때문에이 솔루션이 정말 마음에 듭니다.
dev_masta

wp_register_style의 소스로 false를 사용하는 것도 문서 codex.wordpress.org/Function_Reference/…에
16patsle

3

테마에는 기본적으로 기본 스타일 시트가 있습니다 (그렇지 않으면 테마로로드되지 않음). 이 스타일 시트를 인라인 CSS의 핸들러로 사용하십시오. TwentyFifteen 테마 의 functions.php 에서 예제를 찾을 수 있습니다 (간단하게 코드를 건너 skip).

function twentyfifteen_scripts() {
    wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );

}
function twentyfifteen_post_nav_background() {
    wp_add_inline_style( 'twentyfifteen-style', $css );
}

1
OP는 구체적으로 wp_add_inline_style () 이외의 방법을 요청했습니다. 두 방법 모두 작동하며 wp_add_inline_style ()을 사용해야 할 강력한 이유를 찾지 못했습니다. 이유를 알고 있다면 그것에 대해 알고 싶습니다.
SkyShab

귀하의 솔루션은 효과가 있지만 WP 팀의 누군가에게서 한 번 들었던 내용에 따르면 여전히 "해킹"상태입니다 (실수하지 않은 경우). 정확히 내 의견이 아닙니다 . OP는 스타일 시트를 두 번로드하거나 유령 후크를 사용하지 않고이 작업을 수행 할 수있는 방법이 없다고 생각했다고 생각합니다. 어쨌든, 그들이 플러그인을 작성하지 않는다면, 항상 테마의 스타일 시트가 있습니다. 귀하의 솔루션이 코덱스에 문서화되어 있으므로 답변을 편집하고 있습니다. :)
Casper

wp_add_inline_style ()을 가지고 놀았는데 이것이 내가 찾은 것입니다. 스타일 시트에 스타일을 첨부하면 스타일이 인쇄되지 않으면 스타일이 인쇄되지 않습니다. 그러나 두 방법 모두 머리에 인라인으로 인쇄합니다. 플러그인 개발자이고 스타일이 머리에 인쇄되어 있다고 가정 해보십시오. 이것은 테마 스타일과는 아무런 관련이 없으므로 자식 테마가 기본 테마 스타일을 자체 테마를 사용하여 대기열에서 제거했다면 이제 플러그인 스타일이 출력되지 않습니다. 따라서 OP는 이러한 이유로 요청의 해당 부분을 지정했을 수 있습니다.
SkyShab
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.