사이트 관리자가 사이트에서 각 위젯이 나타날 위치를 이해하도록 돕기 위해 관리자 패널에서 위젯 페이지를 약간 다르게 디자인하려고합니다.
이를 위해 widgets.php가 렌더링하는 HTML을 변경해야합니다 (CSS 변경만으로는 충분하지 않습니다). 코어를 건드리지 않고 어떻게하면 좋을까요?
사이트 관리자가 사이트에서 각 위젯이 나타날 위치를 이해하도록 돕기 위해 관리자 패널에서 위젯 페이지를 약간 다르게 디자인하려고합니다.
이를 위해 widgets.php가 렌더링하는 HTML을 변경해야합니다 (CSS 변경만으로는 충분하지 않습니다). 코어를 건드리지 않고 어떻게하면 좋을까요?
답변:
WordPress를 반드시 3.3.1로 업그레이드하면 관리자의 각 위젯 영역에 CSS를 통해 타겟팅하는 데 사용할 수있는 ID가 생겼습니다. 예는 http://core.trac.wordpress.org/ticket/18334 를 참조 하십시오 .
질문을 머리에서 꺼낼 수는 없지만 완전한 해결책을 찾을 시간이 없습니다. 여기에 아이디어를 적어 놓고 작은 현상금을 설정하겠습니다.
다른 컨텐츠 위에 조치 'widgets_admin_page'
가 wp-admin/widgets.php
있습니다. 여기에 미리보기 상자를 배치 할 수 있습니다.
샘플 코드 :
add_action( 'widgets_admin_page', 'show_widget_preview' );
function show_widget_preview()
{
$preview_widgets = $GLOBALS['wp_registered_sidebars'];
unset ( $preview_widgets['wp_inactive_widgets'] );
print '<div style="border:2px solid #ddf;padding:20px">'
. '<pre>' . htmlspecialchars( print_r( $preview_widgets, TRUE ) ) . '</pre>'
. '</div>';
}
등록 된 모든 사이드 바의 배열을 인쇄합니다. 등록 된 위젯을 찾으려면 모든 사이드 바를 살펴 봐야합니다.
미리보기를 유용하게하려면 HTML 템플릿과 스타일 시트의 두 파일이 필요합니다.
사용 add_theme_support()
합니다.
테마의 샘플 코드 functions.php
:
add_theme_support(
'widget_preview',
array (
'template' => get_stylesheet_directory() . '/widget-preview.php',
'stylesheet' => get_stylesheet_directory() . '/widget-preview.css'
)
);
에서 show_widget_preview()
당신 스타일 시트를 대기열 및 템플릿을로드합니다. 의 사전 정의 된 자리 표시 자에 등록 된 사이드 바를 렌더링합니다 widget-preview.php
.
사용자 가 위젯에서 저장 단추를 누른 후 AJAX마다 템플리트를 업데이트 하십시오 .
당면 과제 : 접근성 모드, 작은 창 및 CSS 충돌을 고려하십시오. 사이드 바가 등록되지 않은 경우 유용한 메시지를 표시합니다 (사이드 바 설명?). 사용자가 위젯을 미리보기 상자로 드래그하려고하면 어떻게됩니까? :)