gabrielsolomon
  • 0
Новичок

Плагин WordPress для одноразовой регистрации на мероприятие? [закрыто]

  • 0
Закрыто. Этот вопрос
не по теме. В настоящее время ответы не принимаются.

Share
  1. Привет Соломонгаби:

    Формы

    Для формы я бы предложил использовать GravityForms. Его очень легко использовать для разработки и публикации формы, и вот пример формы, которую мы сделали для запросов на участие в качестве докладчика.

    GravityForms стоит 39 долларов за сервер, но если вы спросите, может быть, они захотят дать бесплатную копию благотворительной организации?

    Регистрация

    Я бы, вероятно, просто порекомендовал использовать EventBrite, как мы это делали для нашей бизнес-конференции WordPress.

    EventBrite можно использовать бесплатно, если ваше мероприятие бесплатное, а сборы вполне оправдывают отсутствие головной боли, если вы взимаете плату. Использовать EventBrite (или аналогичный сервис) будет намного проще, чем пытаться реализовать что-то в WordPress для разового мероприятия.

    Я написал шорткод, чтобы упростить отображение (вы можете поместить код в functions.php файл вашей темы). Вот использование прототипа для шорткода:

    [eventbrite src="{event_url}" width="{width}" height="{height}"]

    А вот как выглядел шорткод при использовании ( конечно, не забудьте указать свой собственный URL-адрес события ):

    [eventbrite src="http://www.eventbrite.com/tickets-external?eid=582216425&ref=etckt" width="620" height="500"]

    И, наконец, вот исходный код PHP для короткого кода:

    <?php
    add_shortcode('eventbrite', 'eventbrite_show_widget');
    
    function eventbrite_show_widget($args) {
      $valid_types = array('ticket-form',);
      $div_style = 'border:1px solid black;color:white;background:red;padding:10px;';
      $default = array(
        'type' => 'ticket-form',
        'url' => '',
        'src' => '',
        'width' => '100%',
        'height' => '500',
      );
      $args = array_merge($default,$args);
      extract($args);
      if (empty($url) && empty($src)) {
        $html =<<<HTML
    <div style="$div_style">
    <p>The "eventbrite" shortcode much have an attribute of either "<b><i>src</i></b>" or "<b><i>url</i></b>", i.e.:</p>
    <ul>
    <li>[eventbrite type="ticket-form" <b><i>src</i></b>="http://www.eventbrite.com/tickets-external?eid=582216425&ref=etckt"]</li>
    <li>[eventbrite type="ticket-form" <b><i>url</i></b>="http://www.eventbrite.com/tickets-external?eid=582216425&ref=etckt"]</li>
    </ul>
    </div>
    HTML;
      } else if (!empty($url) && !empty($src)) {
        $html =<<<HTML
    <div style="$div_style">
    You should only the "<b><i>src</i></b>" attribute or the "<b><i>url</i></b>" attribute when using the "eventbrite" shortcode.
    </div>
    HTML;
      } else if (!in_array($args['type'],$valid_types)) {
        $valid_types = implode('</b></i>"</li><li>"<i><b>',$valid_types);
        $html =<<<HTML
    <div style="$div_style">
    <p>When using the "eventbrite" shortcode you must specifiy an attribute of "<b><i>type</i></b>" with one of the following valid values:</p>
    <ul><li>"<i><b>$valid_types</b></i>"</li></ul>
    <p>i.e.:</p>
    <ul>
    <li>[eventbrite <b><i>type</i></b>="<b><i>ticket-form</i></b>" src="$url$src"]</li>
    </ul>
    </div>
    HTML;
      } else  {
      $html = <<<HTML
    <div id="eventbrite">
      <iframe src="$src$url" width="$width" height="$height" allowtransparency="true" scrolling="auto"></iframe>
    </div>
    HTML;
      }
      return $html;
    }
    
    • 0
  2. проверьте EventExpresso (http://eventespresso.com/), у которого есть как платная, так и бесплатная версия. Это должно делать все, что вам нужно.

    • 0
  3. Вы можете изменить стандартную форму регистрации пользователя WordPress, чтобы она требовала больше данных, чем обычное имя пользователя + адрес электронной почты.

    add_action('register_form','my_show_extra_fields');
    add_action('register_post','my_check_fields',10,3);
    add_action('user_register','my_register_extra_fields',10,3);
    
    function my_show_extra_fields(){
        ?>
        <style>
        #user_first, #user_last, #hzip {
          background:none repeat scroll 0 0 #FBFBFB;
          border:1px solid #E5E5E5;
          font-size:24px;
          margin-bottom:16px;
          margin-right:6px;
          margin-top:2px;
          padding:3px;
          width:97%;
        }
        </style>
        <p><label>First Name<br/>
          <input id="user_first" type="text" tabindex="20" size="25" value="<?php echo $_POST['first']; ?>" name="first"/>
          </label></p>
        <p><label>Last Name<br/>
          <input id="user_last" type="text" tabindex="20" size="25" value="<?php echo $_POST['last']; ?>" name="last"/>
          </label></p>
        <p><label>Home ZIP Code<br/>
          <input id="hzip" type="text" tabindex="20" size="25" maxlength="10" value="<?php echo $_POST['hzip']; ?>" name="hzip"/>
          </label></p>
        <?php
    }
    
    function my_check_fields($login, $email, $errors) {
      global $firstname, $lastname, $hzip;
      if ($_POST['first'] == '') {
        $errors->add('empty_realname', "<strong>ERROR</strong>: Please enter first name");
      } else {
        $firstname = $_POST['first'];
      }
      if ($_POST['last'] == '') {
        $errors->add('empty_realname', "<strong>ERROR</strong>: Please enter last name");
      } else {
        $lastname = $_POST['last'];
      }
      if ($_POST['hzip'] == '') {
        $errors->add('empty_hzip', "<strong>ERROR</strong>: Please enter home ZIP Code");
      } else {
        $hzip = $_POST['hzip'];
      }
    }
    
    function my_register_extra_fields($user_id, $password="", $meta=array())  {
      $userdata = array();
      $userdata['ID'] = $user_id;
      $userdata['first_name'] = $_POST['first'];
      $userdata['last_name'] = $_POST['last'];
      wp_update_user($userdata);
      update_usermeta( $user_id, 'hzip', $_POST['hzip'] );
    }
    
    add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
    add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );
    
    function my_show_extra_profile_fields( $user ) {
      $current_hzip = esc_attr( get_the_author_meta( 'hzip', $user->ID ) );
        ?>
        <h3>Extra profile information</h3>
        <table class="form-table">
          <tr>
            <th><label for="hzip">Home ZIP Code</label></th>
            <td>
              <input type="text" name="hzip" id="hzip" size="10" maxlength="10" value="<?php echo $current_hzip ?>" class="regular-text" />
            </td>
          </tr>
        </table>
        <?php
    }
    
    add_action( 'personal_options_update', 'my_save_extra_profile_fields' );
    add_action( 'edit_user_profile_update', 'my_save_extra_profile_fields' );
    
    function my_save_extra_profile_fields($user_id) {
      if ( !current_user_can('edit_user', $user_id) ) {
        return false;
      }
      update_usermeta( $user_id, 'hzip', $_POST['hzip'] );
    }
    

    Поместите вышеуказанное в свой functions.php .

    Фантастический плагин для отображения настраиваемых списков пользователей — AmR User Lists.

    ( Редактировать: добавлен материал для регистрации пользователей.)

    ( Редактировать 2: добавлены пользовательские данные, которые обычно не сохраняются в WordPress.)

    • 0
  4. Или используйте BuddyPress, у которого есть все эти функции и многое другое после настройки

    • 0

Оставить ответ

You must login to add an answer.