programing

WordPress를 사용하여 제거할 때 테이블을 드롭하는 방법

nicegoodjob 2023. 4. 4. 23:06
반응형

WordPress를 사용하여 제거할 때 테이블을 드롭하는 방법

플러그인 활성화 시 WordPress 데이터베이스에 4개의 테이블이 생성됩니다.

제거할 때 테이블을 삭제하려고 합니다.

비활성화 시 테이블을 삭제하도록 쓸 수 있었습니다.그러나 제가 읽은 바로는 관리자가 비활성화하는 것보다 제거할 때까지 데이터베이스 테이블 정보를 유지하는 것이 좋습니다.

해답을 찾고 있었는데 내가 찾을 수 있는 건 해답을 해제하는 것뿐이야버전 옵션도 있어 언인스톨 할 수 있습니다.

uninstall.phpboothecoder가 말한 대로 실행해서는 안 됩니다.uninstall.php 파일을 사용하여 플러그인 제거를 처리하면 플러그인이 올바르게 설치되고 활성화되어야 실행할 수 있기 때문에 문제가 발생할 수 있습니다.플러그인이 활성화되지 않은 경우 또는 플러그인이 비활성화되었다가 제거된 경우 uninstall.php 파일은 실행되지 않으며 플러그인이 담당했던 청소 태스크는 수행되지 않습니다.이로 인해 플러그인별 데이터가 데이터베이스에 남아 나중에 플러그인을 다시 설치할 경우 문제가 발생할 수 있습니다.WordPress 언인스톨 훅을 사용하는 것이 좋습니다.

원하는 파일 이름을 지정하거나 제거할 별도의 파일 없이 단일 파일로 지정할 수 있습니다.

register_uninstall_hook('uninstall.php', 'on_uninstall');

는 WP가 언인스톨에서 uninstall.php를 실행하고 on_uninstall 기능을 수행함을 의미합니다.php 플러그인이 삭제되는 시기를 지정합니다.따라서 필요에 따라 파일 이름을 변경할 수 있으며, 함수의 이름을 변경할 수 있습니다.

register_uninstall_hook(__FILE__, 'on_uninstall');

뜻이지만, ★★★★★★★★★★★★★★★★★★★★★★★★.__FILE__현재 어떤 파일이 동작하고 있으며 함수 on_function이 이 파일에 있어야 하는지 나타냅니다.

파일 php.net

심볼 링크가 확인된 파일의 전체 경로 및 파일 이름.include 내에서 사용되는 경우 포함된 파일의 이름이 반환됩니다.

활성화/비활성화/언인스톨 기능의 간단한 예.

function on_activation()
{
    //Some stuff
}

function on_deactivation()
{
    //Some stuff
}

function on_uninstall()
{
    //Some stuff
}

register_activation_hook(__FILE__, 'on_activation');
register_deactivation_hook(__FILE__, 'on_deactivation');
register_uninstall_hook(__FILE__, 'on_uninstall');

일부 옵션을 추가한 경우 제거할 때 다음과 같이 삭제할 수 있습니다.

delete_option( 'some name' );

boothecoder가 말했듯이 비활성화 시 테이블을 드롭하지 마십시오.비활성화 후 데이터가 손실될 수 있는 사용자에게는 중복되고 우호적이지 않습니다.

코드에 구문 오류가 있습니다.

$sql = 'DROP TABLE IF EXISTS $table_name;';

다음과 같이 해야 합니다.

$sql = "DROP TABLE IF EXISTS $table_name";

문자열에 변수를 삽입하려면 큰따옴표를 사용해야 합니다.

require_once는 용장성이 있습니다.다음과 같이 하는 것이 좋습니다.

function e34s_db_clients_uninstall()
{
    global $wpdb;
    $table_name = $wpdb->prefix . 'e34s_clients';
    $sql = "DROP TABLE IF EXISTS $table_name";
    $wpdb->query($sql);
    delete_option('e34s_time_card_version');
}

register_uninstall_hook(__FILE__, 'e34s_db_clients_uninstall');

또는 다음과 같이 합니다.

register_uninstall_hook('uninstall.php', 'e34s_db_clients_uninstall');

uninstall.phpe34s_db_clients_uninstall 함수가 있습니다.

플러그인 제거/삭제 시 이 작업을 수행하는 방법은 두 가지가 있습니다.

제가 배운 가장 좋은 방법은 언인스톨을 사용하는 것입니다.php

uninstall.dload는 플러그인에서 플러그인이 제거 또는 삭제되었을 때만 로드됩니다.사용자가 플러그인을 삭제 또는 제거할 때 실행할 코드를 플러그인에 넣을 수 있습니다.

<?php
/* 
 * Removing Plugin data using uninstall.php
 * the below function clears the database table on uninstall
 * only loads this file when uninstalling a plugin.
 */

/* 
 * exit uninstall if not called by WP
 */
if ( !defined( 'WP_UNINSTALL_PLUGIN' ) ) {
    exit();
}

/* 
 * Making WPDB as global
 * to access database information.
 */
global $wpdb;

/* 
 * @var $table_name 
 * name of table to be dropped
 * prefixed with $wpdb->prefix from the database
 */
$table_name = $wpdb->prefix . 'table_name_to_be_dropped';

// drop the table from the database.
$wpdb->query( "DROP TABLE IF EXISTS $table_name" );

테이블 이름을 기준으로 "table_name_to_be_module"을 변경합니다.

음, 이 문제를 검색했을 때 많은 결과를 얻었어요.내가 얻은 것은 이렇다.

function mr_np_activate(){
    // hook uninstall
    if ( function_exists('register_uninstall_hook') )
        register_uninstall_hook(__FILE__,'mr_np_uninstall');        
}
register_activation_hook(__FILE__,'mr_np_activate');    

function mr_np_uninstall() {
    delete_option('my_plugins_options'); 
}

출처 : https://wordpress.stackexchange.com/questions/24600/how-can-i-delete-options-with-register-uninstall-hook

상세한 것에 대하여는, http://codex.wordpress.org/Function_Reference/register_uninstall_hook 를 참조해 주세요.

사용하다,register_uninstall_hook. 플러그 인의 언인스톨을 요구하는 언인스톨 링크를 클릭했을 때에 호출되는 언인스톨 훅을 등록합니다.자세한 것에 대하여는, http://codex.wordpress.org/Function_Reference/register_uninstall_hook 를 참조해 주세요.

관리자가 플러그인을 제거/삭제할 때만 테이블을 삭제합니다.

admin이 플러그인을 비활성화할 때 테이블을 드롭하지 마십시오.일반적으로 사용자는 모든 플러그인을 비활성화하여 워드프레스 오류를 해결한 후 플러그인을 다시 활성화하기 때문에 이 때 테이블을 드롭하면 admin에 의해 설정된 모든 플러그인 설정이 손실됩니다.또한 워드프레스를 업그레이드하는 동안 모든 플러그인이 자동으로 비활성화되고 업그레이드 성공 후 다시 활성화됩니다.

언인스톨중에 테이블을 삭제하는 순서:

  • 1) 먼저 플러그인 루트 폴더에 unistall.php를 작성해야 합니다.이 파일은 사용자가 삭제 버튼을 클릭하면 워드프레스로 자동으로 호출됩니다.이 파일에 코드를 포함할 수 있습니다.
  • 2) http://codex.wordpress.org/Function_Reference/register_uninstall_hook에 있는 문서 전체를 읽어야 합니다.

register_interation_hook을 사용합니다.그것은 나에게 도움이 됩니다.

function on_deactivation() {

    global $wpdb;
    $table_name = $wpdb->prefix . 'school';
    $sql        = "DROP TABLE IF EXISTS $table_name";
    $wpdb->query( $sql );
    delete_option( 'wp_install_uninstall_config' );
}

register_deactivation_hook( __FILE__, 'on_deactivation' );

언급URL : https://stackoverflow.com/questions/20944623/how-to-drop-tables-on-uninstall-using-wordpress

반응형