관리자 메뉴 항목에 업데이트 알림 풍선을 추가 하시겠습니까?


9

나는 더 이해하기 위해 이것을 다시 말 하였다.

좋아, 기본 WordPress 플러그인과 마찬가지로 업데이트를 확인하는 원격 서비스를 사용하는 플러그인이 있습니다.이 경우 XML 파일 만 확인합니다.

여기에 이미지 설명을 입력하십시오업데이트가 가능할 때 이와 같은 메뉴 풍선을 표시하고 싶습니다 .

"1"또는 "경고"와 같은 텍스트 만 표시 할 수 있지만 중요하지 않습니다.

플러그인에서 옵션 페이지 (를 사용 add_options_page)를 사용 하므로 플러그인 설정이 기본 "설정"하위 메뉴 아래에 표시됩니다.

풍선을 표시하려면 다음 CSS를 추가해야한다고 생각합니다.

<span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>

그리고 세계에 묶으십시오 $submenu. 문제는 각 사이트마다 다른 값을 가지므로 메뉴에 하드 코딩 된 배열 값을 사용할 수 없다는 것입니다.

사용할 수 없습니다 $submenu[80][10] .= <span class='update-plugins count-1' title='title'><span class='update-count'>1</span></span>

플러그인 하위 메뉴 값을 어떻게 찾을 수 있습니까? 배열을 반복하고 문자열 값을 일치시켜야합니까?

또한 값을 하드 코딩해도 버블이 표시되지 않습니다.

//adding plugin to menu
add_action('admin_menu', 'sec_plugin_checker');

function sec_plugin_checker() {
  add_options_page(' Plugin Checker', 'Plugin Check', 'activate_plugins', 
  'sec_plugin_check', 'sec_checker');


// the conditional where I want the bubble to appear

if (!empty($matches)){ 
    echo "Match found !<br />";

    global $submenu;
    foreach( $submenu as $item ) {

    $item[41][20] = sprintf( __( 'Updates %s', 'sec_plugin_checker' ),  
                "<span class='update-plugins count-1' title='title'>
                 <span class='update-count'>1</span></span>");  

       }
  }

여기에 var_dump($submenu);다음과 같은 모습이 있습니다.

["options-general.php"]=>
array(9){
...

[41]=>
    array(4) {
      [0]=>
      string(20) "Plugin Check"
      [1]=>
      string(16) "activate_plugins"
      [2]=>
      string(21) "sec_plugin_check"
      [3]=>
      string(23) " Plugin Checker"

     ...

      }

그 이유는 무엇입니까? 정확히 무엇을하고 싶습니까?
Ján Bočínec

1
@Wyck : 사용 가능한 업데이트 및 중재되지 않은 댓글 수를 나타내는 풍선 에 대해 이야기하고 있습니까? 더 명확하게하기 위해 스크린 샷을 포함하도록 질문을 업데이트해야 할 수도 있습니다.
Jan Fabry

예, 정확히 화면을 추가하겠습니다.
Wyck

사용 가능한 업데이트를 정확히 나타내려는 것은 무엇입니까? WPORG 리포지토리 호스팅 테마 및 플러그인의 경우이 업데이트 알림이 자동으로 처리됩니다.
Chip Bennett

플러그인의 사용자 정의 기능이며 다른 서비스에서 원격 업데이트를 가져오고 동일한 업데이트 알림 기능을 사용하고 싶습니다.
Wyck

답변:


8

add_options_page()나중에 전화 하지 않을 때이 작업을 수행합니다 . 내부 구조를 사용하는 대신 지원되는 API를 사용하여이 작업을 수행하는 것이 좋습니다.

플러그인 업데이터는 주기적으로 플러그인 상태를 확인한 후 결과를 일시적으로 저장합니다 . 즉 , 메뉴가 생성 될 때만 캐시 된 상태를 읽으며 모든 페이지로드시 전체 검사를 수행하지는 않습니다. 비슷한 것을 할 수 있습니다.

add_action( 'admin_menu', 'wpse15567_admin_menu' );
function wpse15567_admin_menu()
{
    $warnings = get_transient( 'wpse15567_warnings' );
    $warning_count = count( $warnings );
    $warning_title = esc_attr( sprintf( '%d plugin warnings', $warning_count ) );

    $menu_label = sprintf( __( 'Plugin Checker %s' ), "<span class='update-plugins count-$warning_count' title='$warning_title'><span class='update-count'>" . number_format_i18n($warning_count) . "</span></span>" );

    add_options_page( 'Plugin Check', $menu_label, 'activate_plugins', 'sec_plugin_check', 'sec_checker' );
}

알림 풍선이있는 메뉴 항목

실제 경고 점검을 수행하면 결과를 일시적으로 저장하여 나중에 읽을 수 있도록합니다.

if ( ! empty( $matches ) ) {
    set_transient( 'wpse15567_warnings', $matches );
}

경고가 없으면 특별한 작업을 수행하지 않습니다. 이 클래스 얻을 수 있기 때문에 거품이 표시되지 않습니다 count-0, display: noneCSS의의를 .


1
완전한! 감사합니다.이 작업을 수행하는 훨씬 좋은 방법입니다.
Wyck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.