Faça selecionar itens selecionados do Mutiselect “selecionados”

Estou desenvolvendo um painel de configurações de tema para um novo tema wordpress que tem uma opção para excluir categorias de serem mostradas no loop. Consegui obter a funcionalidade principal para trabalhar, usando uma checkbox mutilselect e salvando os valores como matriz …

 <select name="[]" id="" multiple="multiple"> None (don't exclude anything)  <option value="cat_ID; ?>" cat_ID ); ?>>cat_name; ?>   

No entanto, não consigo entender como verificar cada item no loop foreach() se seu valor corresponder a um valor na matriz de valores armazenados, então aplique selected="selected" se ele retornar verdadeiro. Eu entendo a function wp selected() , mas não entendo como usá-la neste caso (vários valores dentro do loop foreach() ).

Qualquer ajuda será apreciada, eu sou um n00b então me perdoe se é uma pergunta estúpida 🙂

Solutions Collecting From Web of "Faça selecionar itens selecionados do Mutiselect “selecionados”"

Estou assumindo que sua variável $selected contém uma série de valores para os itens atualmente selecionados?

Você não pode usar selecionado neste caso (com checkboxs de seleção múltipla) porque ele só compara duas strings. Não irá testar para ver se o valor está em uma matriz. Em vez disso, use uma declaração ternária e in_array()

 < ?php foreach ($cats as $cat_list ) { $selected = in_array( $cat_list->cat_ID, $selected ) ? ' selected="selected" ' : ''; ?>  < ?php } ?> 

O Q não é estúpido. Imo apenas a maneira extremamente confusa é documentada. Eu também lembro que há algum lugar no códice escrito, que o uso de coisas selected() e semelhantes é uma obrigação (!). Eu não acordo.

De qualquer forma: selected( 'one_value', 'val_to_compare_with', true );

Eu sei que esta é uma pergunta antiga, mas ainda assim a resposta não foi respondida usando a function principal …

Aqui está:

 $cats = get_categories('hide_empty=0&orderby=name'); ?>  

Certifique-se de que $selected seja uma matriz, é claro, que contém ids de categoria selecionados.