Ordenar mensagens através de valores de taxonomia personalizados usando checkboxs de verificação?

Estou trabalhando em um projeto que tem um menu suspenso de valores de taxonomia personalizados chamados de “Disciplinas”, existem apenas 4 deles no menu suspenso. A maneira como foi projetado é que você pode selecionar mais de uma disciplina para filtrar. A idéia é que você marque a checkbox de seleção e ele irá filtrar as postagens através do valor especificado no valor da checkbox de seleção.

Minha pergunta é: qual é o melhor caminho a seguir sobre isso? Não precisa ser AJAX, na verdade, eu ficaria feliz por o usuário verificar os valores desejados e se eles não verificarem nada dentro do espaço de 2 segundos ou mais, então a página recarregada e os valores que eles querem para classificar apenas mostrou as postagens correspondentes a esse critério.

O problema que estou enfrentando aqui é onde eu armazeno esses valores e como recarrego a página para saber sobre esses valores? Estou assumindo que a solução provavelmente usará o query_var, mas não tenho certeza se existem outras formas, como usar regras de reescrita personalizadas e rewrite tags.

Este é o código atual que estou usando para exibir o menu suspenso:

A saída HTML gerada parece assim:

  

Solutions Collecting From Web of "Ordenar mensagens através de valores de taxonomia personalizados usando checkboxs de verificação?"

Enrole tudo em um formulário e adicione um botão de envio nela:

 
    ...

Use IDs de termo como valores de checkbox de seleção em vez de limas (você economizará alguns resources de servidor):

$discipline->slug; > $discipline->term_id

Então, em seu arquivo functions.php, verifique se esse formulário foi enviado e altere a consulta do WP para include apenas posts com pelo menos um desses termos:

 add_action('pre_get_posts', function($query){ // only do this if we have user input and if this is the main query if(isset($_POST['discipline']) && $query->is_main_query()){ // sanitize $disciplines = array_map('intval', $_POST['discipline']); // prepare a taxonomy query $my_tax_query = array( 'taxonomy' => 'discipline', 'field' => 'id', 'terms' => $disciplines, 'operator' => 'IN', ); // include it in the main query $query->set('tax_query', array($my_tax_query)); } }); 

Adicionar suporte AJAX é muito fácil. Basta ligar uma function no evento de envio de formulário (use preventDefault() para evitar a submissão) (ou no evento de alteração de input se você não quiser o botão enviar), serializar valores de input em uma variável, faça um $.ajax POST solicite onde você passa essa variável e obtenha o conteúdo do DIV com as postagens da resposta. E substitua os conteúdos existentes por ele …