플러그인 업데이트시 사용자 정의 메시지를 작성하는 방법


10

플러그인 페이지에 액세스 할 때 오늘이 메시지를 보았습니다. 맞춤 플러그인 업데이트 메시지

그렇다면 워드 프레스에서 호스팅되는 자체 플러그인을 업데이트하려면 어떻게합니까?

답변:


9

이 메시지에 의해 만들어집니다 W3_Total_Cache->in_plugin_update_message()에 푹 "in_plugin_update_message-$file"에서 wp_plugin_update_row().

readme를 구문 분석하고 변경 로그에서 정보를 표시하는 것이 좋지만 전반적으로 다른 후크와 마찬가지로 일부 내용을 에코 할 수 있습니다.


아, 그 고리는 내가 찾고있는 것입니다. Thx
ariefbayu

10

훅 빌딩

조치 후크 이름을 명확하게하려면 다음을 수행하십시오.

global $pagenow;
if ( 'plugins.php' === $pagenow )
{
    // Better update message
    $file   = basename( __FILE__ );
    $folder = basename( dirname( __FILE__ ) );
    $hook = "in_plugin_update_message-{$folder}/{$file}";
    add_action( $hook, 'your_update_message_cb', 20, 2 );
}

훅 콜백 기능

자체가 한 두 가지 기능 $variables: 연결 $plugins_data$r플러그인에 액세스 얻을 수 있습니다.

/**
 * Displays an update message for plugin list screens.
 * Shows only the version updates from the current until the newest version
 * 
 * @param (array) $plugin_data
 * @param (object) $r
 * @return (string) $output
 */
function your_update_message_cb( $plugin_data, $r )
{
    // readme contents
    $data       = file_get_contents( 'http://plugins.trac.wordpress.org/browser/YOUR_PLUGIN_FOLDER_NAME_IN_THE_OFFICIAL_REPO/trunk/readme.txt?format=txt' );

    // assuming you've got a Changelog section
    // @example == Changelog ==
    $changelog  = stristr( $data, '== Changelog ==' );

    // assuming you've got a Screenshots section
    // @example == Screenshots ==
    $changelog  = stristr( $changelog, '== Screenshots ==', true );

    // only return for the current & later versions
    $curr_ver   = get_plugin_data('Version');

    // assuming you use "= v" to prepend your version numbers
    // @example = v0.2.1 =
    $changelog  = stristr( $changelog, "= v{$curr_ver}" );

    // uncomment the next line to var_export $var contents for dev:
    # echo '<pre>'.var_export( $plugin_data, false ).'<br />'.var_export( $r, false ).'</pre>';

    // echo stuff....
    $output = 'whatever you want to do';
    return print $output;
}

각주:

이 방법은 내부 링크 검사기 플러그인 에서 찾을 수 있습니다 .

부가:

plugin_basename(__FILE__)위의 두 줄 대신 사용할 수 있습니다. 또한 현재 페이지가 플러그인 페이지인지 확인하는 것은 실제로 해당 페이지에서만 함수를 호출하기 때문에 실제로는 필요하지 않습니다. (매우 미미한) 이점은 여전히 ​​다른 콜백이 연결되어 있지 않다는 것입니다. 이 답변은 꽤 오래 되었으므로이 방법은 여전히 ​​문제없이 작동하지만 이제는에서 반환 한 객체를 확인하십시오 get_current_screen().

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.