2014-12-10 1 views
0

wp.4.0.1에 큰 문제가 있습니다. 나는 클라이언트를 위해 관리 회사 소프트웨어를 만들고, 모두는 wordpress 기능/plugins/actions & stuff에 기반을두고있다.Wordpress 사용자 지정 작업/필터가 두 번 실행됩니다.

class AppNoteCommand{ 
    function AppNoteCommand() { 
     $this->table_note = 'wp_app_noteCommand'; 
     $this->table_stock = 'wp_app_products_stock'; 
     $this->instance = $this; 

     add_action('saveNoteCommand', array($this, 'hookSaveNoteCommand'), 10, 4); 
     add_action('saveNoteCommand', array($this, 'updatingStock'), 20, 4); 
    } 
    function hookSaveNoteCommand($noteFields, $clientFields, $stockFields, $dbAction) { 
     global $wpdb; 
     printr($noteFields); 
     if ($dbAction == 'update' && (int) $noteFields['id'] >0) { 
      $wpdb->update($this->table_note, $noteFields, array('id' => $noteFields['id'])); 
     } else $wpdb->insert($this->table_note, $noteFields); 
    } 
    function updatingStock($noteFields, $clientFields, $stockFields, $dbAction) { 
     global $wpdb; 
     printr($stockFields); 
     if ($dbAction != 'update') { 
      foreach ($stockFields['products'] as $product_id=>$stock) { 
       $wpdb->query("UPDATE {$this->table_stock} SET stock=stock-{$stock} WHERE product_id='{$product_id}' AND location_id='{$stockFields['location_id']}'"); 
       echo mysql_error()."<br />"; 
      } 
     } 
    } 
} 

주된 문제점은 saveNoteCommand가 저장 명령을 두 번 실행 한 사람입니다. 첫 번째 실행은 괜찮지 만 두 번째 실행은 MySQL (중복 키 프라이 머리)에서 오류를 생성합니다. 나는 왜 wordpress가 어떤 행동을 위해 등록 된 하나의 함수를 두 번 실행했는지 이해하지 못한다. 나는이 문제가 일반적으로 wordpress에 있다고 생각한다. 이 액션에서 선언 된 모든 함수는 두 번 실행됩니다.

누군가 나에게이 문제를 해결하기 위해, 또는 말해 도와 드릴까요 내가 뭔가 잘못

+0

왜 함수 안에'add_action()'이 있습니까? – rnevius

답변

0
WP는 두 번 절차 액션을 발사되는 용어에 두 개의 서로 다른 게시물을 절약되기 때문에 아마 두 번을 실행하는 것

경우 :

  • 후 자체
  • 그래서, 당신이 필요로하는 가정 개정

등의 이전 버전에서 포스트와 같은 새로운 버전의 포스트 당신의 행동을 부르는 것에 ID가 전달되었는지 확인하는 것은 수정이다.

0

내 응용 프로그램은 WordPress의 게시물과 관련이 없습니다. 다른 디렉토리에 있고 다른 구조를 가지고 있습니다. saveNoteCommand 조!는 save_post/update_post에서 실행되지 않습니다. 내 스크립트에서만 사용자 지정 작업이 실행되며 $ _POST 데이터 만 제출됩니다.

관련 문제