✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Dica rápida: metadados e edição em linha

22

Se você tiver uma meta box personalizada ou estiver trabalhando com metadados personalizados no nível de postagem, poderá encontrar um problema com a exclusão acidental de dados ao salvá-los na tela de edição em massa.

A configuração do problema é algo assim:

  1. você tem uma coleção de postagens que precisam ser alteradas,
  2. você carrega todas as postagens na tela de edição em massa (como mostrado acima),
  3. você aplica uma mudança.

Quando isso acontece, a alteração ocorre, mas apaga todos os metadados de postagem personalizados que você possa ter.

Esta é apenas uma pequena amostra de código da aparência do método save para seus metadados personalizados (ou seja, estou deixando de fora várias cláusulas de guarda):

<?php

/**
 * Save the options in the meta box.
 *
 * @since    1.0.0
 *
 * @param    int    $post_id    The ID of the current post
 */
public function save( $post_id) {

  // Note: Guard clauses removed for readability.
  // Assume $metadata is set earlier in this function.

  update_post_meta( $post_id, 'acme-custom-meta-data', $metadata );

}

O problema com isso é que não há verificação de que isso esteja vindo da  tela de edição em massa. E por causa disso, os metadados podem ser completamente excluídos.

Para lidar com isso, precisamos verificar se a serialização está vindo da  tela Bulk Edit. Dessa forma, podemos retornar mais cedo e impedir que o código seja executado. Em sua forma mais simples, você pode fazer algo assim :

<?php

/**
 * Save the options in the meta box. Ignore the action if it's coming from the
 * Bulk Edit screen.
 *
 * @since    1.0.0
 *
 * @param    int    $post_id    The ID of the current post
 */
public function save( $post_id) {

  // Note: Guard clauses removed for readability.
  // Assume $metadata is set earlier in this function.

  if (isset( $_POST['_inline_edit'])) {
    return;
  }

  update_post_meta( $post_id, 'acme-custom-meta-data', $metadata );

}

Observe que eu não recomendo usar isso literalmente para casos universais ou para uso universal, pois é agressivo. Em vez disso, acho que vale a pena ler este artigo do Codex para obter mais informações sobre como a edição em linha funciona tanto no lado do servidor quanto no lado do cliente.

O objetivo da postagem é mostrar como os metadados personalizados podem ser excluídos involuntariamente e estabelecer as bases básicas de como você pode evitá-lo.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação