วิธีสร้างข้อความที่กำหนดเองในการอัพเดทปลั๊กอิน


10

ฉันเห็นข้อความนี้วันนี้เมื่อเข้าถึงหน้าปลั๊กอินของฉัน: ข้อความอัปเดตปลั๊กอินที่กำหนดเอง

ดังนั้นฉันจะสร้างสิ่งนี้ได้อย่างไรหากฉันต้องการอัปเดตปลั๊กอินของตัวเองที่โฮสต์บนเวิร์ดเพรส

คำตอบ:


9

ข้อความนี้ถูกสร้างขึ้นโดยการW3_Total_Cache->in_plugin_update_message()ติดยาเสพติดใน"in_plugin_update_message-$file"wp_plugin_update_row()

มันเป็น nifties บางอย่างในการแยกวิเคราะห์ readme และแสดงข้อมูลจากการเปลี่ยนแปลง แต่โดยรวมคุณสามารถสะท้อนบางสิ่งบางอย่างกับเบ็ดอื่น ๆ


อ้าตะขอนั่นคือสิ่งที่ฉันกำลังมองหา ขอบคุณ
ariefbayu

10

อาคารฮุ

หากต้องการทำให้ชื่อ hook ของการดำเนินการชัดเจน:

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.