Pergunta no banco de dados de participantes do WordPress: Múltiplos menus suspensos selecionados com dados populacionais

Um usuário perguntou ?

Eu usei o menu suspenso de seleção e pensei em mover a pergunta para o fórum.

Segue meu código completo…

/**
 * Plugin Name: Participants Database - Populate Custom Chosen Dropdown
 * Description: tests loading a chosen element with options
 *
 * sets our function to be called when the pdbcde-before_element_rendered action 
 * is triggered by the form just before the "Chosen Dropdown" is shown so we can 
 * change the list of options to show
 */
 
// attach our function to the pdbcde-before_element_rendered action
add_action( 'pdbcde-before_element_rendered', 'xnau_set_specialty_dropdown_options');
/**
 * sets the options for the "specialty" dropdown
 *
 * @global wpdb $wpdb
 * @param PDb_FormElement object $field the current field
 */
function xnau_set_specialty_dropdown_options ( $field )
{
  // this is the name of the field we want to add options to
  $fieldname="team";
 
  if ( $field->name === $fieldname ) :  // check for our dropdown field
  
  global $wpdb; // grab the db helper object
  
  /*
   * define the query for getting the list saved specialties
   * 
   * note that the $wpdb->prefix method is used to get the table 
   * prefix; this is so it will work on all WP installs
   */
  $query = '
    SELECT first_name,last_name,job_category,record_slug
    FROM <code>' . $wpdb->prefix . 'participants_database</code> 
    WHERE job_category NOT LIKE "%staff%"
  ';
	
  // now execute the query and get the results
  $raw_names = $wpdb->get_results( $query );
  
  /*
   * now expand the result array into an array for the options property of the dropdown
   */
  $options = array();

  foreach ( $raw_names as $record ) {
	  if ($record->job_category == 'faculty') : $options[] = $record->first_name.' '.$record->last_name.' (Faculty)'; 
	  elseif ($record->job_category == 'staff') : $options[] = $record->first_name.' '.$record->last_name.' (Staff)';
	  elseif ($record->job_category == 'researcher') : $options[] = $record->first_name.' '.$record->last_name.' (Researcher)';
	  elseif ($record->job_category == 'student') : $options[] = $record->first_name.' '.$record->last_name.' (Graduate Student)'; endif;
  }
  
  // now set the field object with the new options list
  $field->options = $options;
  
  endif;
}

Agora, para repetir meu problema, ele está inserindo meus dados com precisão, mas quando salvo minhas alterações e volto ao outono passado, ele mescla minhas opções em uma

hashtag. Por favor ajude e obrigado!

(@xnau)

1 ano, 6 meses atrás

no princípio, tags don't belong in php code. This is for the benefit of anyone who might try to copy your code.

Um problema fundamental com sua abordagem é que você está fornecendo ao usuário opções que não são opções definidas para o campo “equipe”. Embora você possa fazer isso com uma opção, não pode fazer isso com várias opções, elas serão combinadas em um único valor. Isso ocorre porque um domínio multilíngue/outro só pode ter um valor “outro”.

O que você precisa fazer é um pouco mais complicado porque você precisa de uma maneira de salvar nomes de equipe na definição de campo como opções, para que seus usuários possam escolher vários nomes. Você pode fazer isso manualmente ou fornecer um código personalizado automaticamente.

(@rcarmichael)

1 ano, 6 meses atrás

Desculpa. Na verdade, não havia rótulos no meu código, mas havia marcas que me fazem pensar que estou começando e terminando o código, quando na verdade não estou. Eu postei uma continuação do meu problema aqui porque seu site tem limitações. Eu entendi que trazê-lo aqui poderia explicar melhor a minha pergunta.

Agora…. minha luta é tentar descobrir o seu plugin. Ainda antes de ontem percebi que tenho que colocar valores nas entradas. Mas é bem complicado. Eu só esperava que você tivesse uma situação como essa e que pudesse oferecer mais conselhos. Neste ponto em particular, estou ficando sem tempo e não posso brincar com isso por muito mais tempo. Infelizmente, isso significa que terei que recorrer a uma maneira menos conveniente de adicionar funcionários, mas pelo menos funcionará por enquanto.

Se você não tiver mais dicas, vou fechar este tópico. Obrigado pela ajuda.

(@rcarmichael)

1 ano, 6 meses atrás

Fecho. Obrigado.

Isto foi útil?

0 / 0

Deixe uma resposta 0

O seu endereço de email não será publicado. Campos obrigatórios são marcados *