Como criar um arquivo de anexos com paginação de trabalho?

Isso pode soar como query_posts com o número de problema de paginação 2103024, mas acho que este pode ser especial.

Meu site WordPress é basicamente um enorme database de imagens de carros. Cada imagem deve ter tags como ‘cor’ => ‘vermelho’, mas um conjunto de imagens deve ser agrupado em uma galeria com certas outras tags como ‘localização’ => ‘Mônaco’ (=> todas as imagens neste conjunto são tomadas em Mônaco ). Eu deveria ser capaz de criar um arquivo para cada tag de imagem, por exemplo, / cor / vermelho e eu veria todas as imagens mostrando carros vermelhos. Eu deveria ser capaz de criar um arquivo para cada tag de galeria, por exemplo, localização / Mônaco e ver todas as galerias realizadas no Mônaco.

Eu pensei muito sobre isso e eu decidi usar a function de pós-anexo do WordPress em combinação com taxonomias personalizadas. Existem vários plugins que permitem append taxonomias personalizadas aos anexos e é fácil para o usuário que pode simplesmente usar o carregamento em lote para empurrar 30 imagens para o servidor. Portanto, um anexo serve como uma imagem e as imagens anexadas a um tipo de postagem personalizado servem como uma galeria.

Eu consegui trabalhar muito exatamente como eu queria, mas agora estou preso com o arquivo de taxonomia personalizado para os anexos. Para que a WP me mostre anexos eu tenho que empurrar dois parâmetros para a consulta original:

global $wp_query; // convert query object to array $original_query = (array) $wp_query; // attach query parameters to original query $attach_query = array( 'post_type'=> array( 'attachment' ), 'post_status' => array( null ) ); // merge both arrays $args = array_merge($original_query['query_vars'], $attach_query); query_posts( $args ); 

É isso, / image-tags / black / está me mostrando uma lista de carros negros. Eu ainda tenho a paginação funcionando corretamente. No entanto / image-tags / black / page / 2 / e mais alto, lance um erro 404, estranhamente enquanto ainda me mostra os meus anexos desejados. Eu não era evento notando isso primeiro, uma vez que só se pode contar do título da página e das classs corporais mostrando que esta é claramente a localização do modelo errado.

Abaixo estou postando meu índice completo.php e print_r de $ wp_query global. Como você pode ver, o object de consulta mostra um valor ‘max_num_pages’ de 2.

Qualquer ideia será muito apreciada!

impressão de Query Object em pastebin

  array( 'attachment' ), 'post_status' => array( null ) ); // merge both arrays $args = array_merge($original_query['query_vars'], $attach_query); query_posts( $args ); ?>  
<a href="https://wordpress.stackexchange.com//questions/29635/how-to-create-an-attachments-archive-with-working-pagination/">

ID, 'bigger-thumb'); ?>

Solutions Collecting From Web of "Como criar um arquivo de anexos com paginação de trabalho?"

Tudo bem, aqui é como eu funcionou:

Reescrever a consulta dentro de um arquivo de modelo não funcionaria porque a consulta principal já encontrou 0 resultados com base na suposição errada de que os anexos não deveriam ser consultados. Assim, o arquivo de modelo não é executado, mas salta para 404.php, onde tudo está muito atrasado.

Portanto, é preciso alterar a consulta logo após ter sido analisada e antes que os resultados fossem recuperados. WP fornece o hook parse_query para isso. Veja isso: http://codex.wordpress.org/Plugin_API/Action_Reference http://codex.wordpress.org/Query_Overview

 add_action('parse_query', 'hijack_query'); function hijack_query() { global $wp_query; // When inside a custom taxonomy archive include attachments if (is_tax('brands') OR is_tax('author')) { $wp_query->query_vars['post_type'] = array( 'attachment' ); $wp_query->query_vars['post_status'] = array( null ); return $wp_query; } } 

'brands' e 'author' são arquivos de taxonomia personalizados que mostram os anexos atribuídos a essas taxonomias. Altere a instrução if para suas necessidades para que a consulta seja sobrescrito quando necessário. Observe que is_tax() retorna false em arquivos de categoria e arquivos de tags: se você classificou categorias ou tags como uma taxonomia de anexos, use is_category() ou is_tag() respectivamente.