Atualizando o post meta para tipos de postagem personalizados

Estou escrevendo um plugin para trabalho (ainda) e tendo mais um problema.

Eu adicionei minhas meta checkboxs conforme necessário. No entanto, o problema que estou tendo ocorre ao salvar a postagem. Meus fragments para economizar quase vêm deste post . Eu também recebi uma resposta semelhante aqui , mas não está funcionando por algum motivo. : /

protected function __update_post_meta( $post_id, $field_name, $value = '' ) { if ( empty( $value ) OR ! $value ) { delete_post_meta( $post_id, $field_name ); } elseif ( ! get_post_meta( $post_id, $field_name ) ) { add_post_meta( $post_id, $field_name, $value ); } else { update_post_meta( $post_id, $field_name, $value ); } } 

O acima é chamado usando o seguinte. No entanto, não tenho certeza de que meu problema reside na economia atual agora que penso nisso. Estou pensando que pode ser o nonce que pode estar jogando fora.

  public function _wp_save_post( $post_id, $post ) { if ( empty($_POST) OR !isset($_POST['argus_edit_visitor']) OR !wp_verify_nonce( $_POST['argus_edit_visitor'], 'argus_edit_visitor' ) ) { return $post->ID; } if ( ! current_user_can( 'edit_post', $post->ID ) ) return $post->ID; // v_f_name | v_l_name | v_workstation | v_id // Argh! $this->__update_post_meta( $post->ID, 'v_f_name', $_POST['v_f_name'] ); $this->__update_post_meta( $post->ID, 'v_l_name', $_POST['v_l_name'] ); $this->__update_post_meta( $post->ID, 'v_workstation', $_POST['v_workstation'] ); $this->__update_post_meta( $post->ID, 'v_id', $_POST['v_id'] ); } 

O nonce é usado como o seguinte: e criado usando $nonce = wp_create_nonce( plugin_basename( __FILE__ ) ); . O campo de input está dentro do bloco de html sendo armazenado em $ html variável. StackExchange estava analisando meu html, caso contrário, eu colá-lo-ia aqui.

-Zack

EDITAR: Basta testá-lo, e é culpa da não culpa.
EDIT2: Typo da minha parte, mas ainda não funciona.

Solutions Collecting From Web of "Atualizando o post meta para tipos de postagem personalizados"

Eu realmente gosto da sua estrutura de class limpa 🙂 Mas eu tenho uma sugestão que pode consertar coisas (com base na minha experiência com nonces e meta checkboxs de um plug-in que construí no último fim de semana):

Não tente criar o campo nonce manualmente. Você tem atualmente:

 $nonce = wp_create_nonce( plugin_basename( __FILE__ ) ); ...  

O modo padrão para criar este campo está usando a function wp_nonce_field() WordPress. Ele irá adicionar o campo oculto para você:

 wp_nonce_field( __FILE__, 'argus_edit_visitor' ); 

Verificando o nonce

Você está verificando contra a string errada. No seu código, você criou o nonce com __FILE__ mas você verifica com a string argus_edit_vistor . Você tem:

 if ( empty($_POST) OR !isset($_POST['argus_edit_visitor']) OR !wp_verify_nonce( $_POST['argus_edit_visitor'], 'argus_edit_visitor' ) ) { echo "Erm. Why?"; return $post->ID; } 

Você devia ter:

 if ( empty($_POST) OR !isset($_POST['argus_edit_visitor']) OR !wp_verify_nonce( $_POST['argus_edit_visitor'], __FILE__ ) ) { echo "Erm. Why?"; return $post->ID; } 

plugin_basename(__FILE__) usar plugin_basename(__FILE__) ao criar nonces. Mas você não deve se deparar com problemas fazendo o seu caminho, desde que a criação e a verificação do nonce aconteçam no mesmo arquivo.