O ano de 2012 começou com algumas horas de profunda depuração por causa de dois (conhecido) incomoda muito chato. , con la globale (e famosa) omonima istanza $wpdb . A primeira, entre outras coisas bastante datada, presentes no núcleo de WordPress que se relaciona com o método de update() da classe wpdb , com o global (e popular) instância homónimo $wpdb . O defeito aparece quando você tenta atualizar um campo para NULL . Apesar de inúmeras queixas, a equipe de desenvolvimento do WordPress não parece encontrar solução para o problema chato. Na verdade, até à data, a única solução é escrever o SQL para a sua conta.
Houve um tempo quando eu pensei que havia trabalhado em torno do problema, o método incluindo passando a matriz com a lista de tipos de campo, digite:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Desta forma, o SQL que sai é:
1 |
Tudo é perfeito, exceto que, quando o estado está perdido! Na prática, "brincar" com a formatação 'NULL' , quebra todo o resto. Passando os formatos para a condição em que:
1 2 3 4 |
Recebemos (eu diria quase pior):
1 |
Obviamente, é claro que quem está no poder neste jogo é o formato e não o 'date_start' => null . Então a única solução possível é um ataque de força bruta, ou seja:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | array ( $ Valores = matriz ( 'prova' , 'Name' => 'teste', null "Date_start '=> null ); array ( $ Formatos = matriz ( '% S', '% NNULL' ); array ( Onde $ = matriz ( 5 'Id' => 5 ); array ( '%d' ) ; $ Where_formats = matriz ('% d'); update ( 'tablename' , $values , $where , $formats , $where_formats ) ; $ Wpdb -> update ('TableName', $ valores, $ onde, $ formato, $ where_formats); |
Finalmente construir o SQL como você deve:
1 |
No entanto, eu sou o primeiro a dizer, '%NNULL' não é apenas aceitável, mas é melhor para resolver o impasse escrever a atualização por conta própria.
WPML
Permanecendo no tema WordPress, passamos agora Plugin mão. WPML (WordPress Multi Language) é um plugin WordPress dedicado à localização, ou seja, a gestão de um site multi-idioma. Uma característica, devido à arquitetura da solução que os desenvolvedores adotaram para permitir a gravação e gerenciamento de mensagens em diferentes línguas, é a "rastejar" por meio das ações uso maciço e filtros, baixo nível de funções no WordPress . Isto lhe permite manipular todas as chamadas do núcleo do WordPress, incluindo todos aqueles que têm a ver com o banco de dados (e não apenas alguns).
O problema é que, se algo de errado, saltando em todo o jogo como nós vamos quebrar funções que normalmente não têm absolutamente nenhum erro. Uma delas é get_page_by_path() , WordPress característica histórica e conveniente.
Afectados por WPML, não funciona mais quando o tipo de página que você solicitou não foi "engolido" pelo WPML mesmo.
Páginas, incluindo o tipo de Mensagem Personalizado (CPT), conhecido como "ser traduzido como" no WPML administração backend, funcionam perfeitamente com get_page_by_path() . O defeito é encontrado apenas com as páginas que não estão incluídos - na prática - no quadro icl_translations de WPML.
Por isso, não há solução imediata, uma vez que iria mudar o núcleo do WPML mesmo, o que obviamente não recomendo. No entanto, desde que eu sou um usuário registrado, relatei isso no fórum onde a discussão está em andamento para encontrar a melhor solução (para corrigir o erro na instrução SQL select na minha opinião). Esperamos que a próxima atualização.
No entanto, se você não pode esperar para corrigir, não é um artifício bastante rápido e indolor para superar 'temporariamente' e é o problema - como mencionado acima - para definir o tipo de página como indiciado "traduzir" na WPML backend. Configurações atualizadas. Atualize a página. E colocar de volta - eventualmente - tudo como era antes. Quando a página é "abastecido" na tabela WPML, get_page_by_path() retorna aos negócios de sempre.
No entanto, esperar os patches ...










Não há comentários para este post
Deixe um comentário