it-swarm-vi.com

Plugin WordPress phần mềm đăng ký trong phần mềm?

Tôi đang xây dựng một trang web cho một sự kiện từ thiện và tôi muốn mọi người đăng ký cho sự kiện này.

Biểu mẫu phải chứa tên, email và các câu hỏi tùy chỉnh khác. Ngoài ra tôi muốn có một trang để liệt kê những người đã đăng ký. Tôi đã nghĩ đến việc sử dụng hệ thống người dùng + một plugin để liệt kê danh sách người dùng.

Bạn sẽ sử dụng plugin nào?

Cảm ơn.

2
Gabriel Solomon

Xin chào solomongaby:

Các hình thức

Đối với biểu mẫu tôi sẽ đề xuất sử dụng GravityForms . Thật dễ dàng để sử dụng để thiết kế và đăng một biểu mẫu và đây là một mẫu ví dụ chúng tôi đã thực hiện cho các yêu cầu làm người trình bày .

GravityForms là $ 39 mỗi máy chủ nhưng nếu bạn hỏi họ có thể sẵn sàng cho một tổ chức từ thiện một bản sao miễn phí không?

Đăng ký

Tôi có lẽ chỉ nên khuyên bạn nên sử dụng EventBrite như chúng tôi đã làm cho hội nghị kinh doanh WordPress của chúng tôi .

EventBrite được sử dụng miễn phí nếu sự kiện của bạn miễn phí và các khoản phí rất đáng để bạn không phải đau đầu nếu bạn đang tính phí. Sử dụng EventBrite (hoặc một dịch vụ tương tự) sẽ dễ dàng hơn nhiều so với việc cố gắng triển khai một cái gì đó trong WordPress cho một sự kiện một lần.

Tôi đã viết một shortcode để hiển thị dễ dàng (bạn có thể đặt mã vào tệp functions.php của chủ đề của mình) . Đây là cách sử dụng nguyên mẫu cho shortcode:

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

Và đây là những gì mà shortcode trông giống như đang sử dụng ( chắc chắn sẽ thay thế URL sự kiện của riêng bạn ):

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

Và cuối cùng đây là mã nguồn PHP cho mã ngắn:

<?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;
}
3
MikeSchinkel

hãy xem EventExpresso (http://eventespresso.com/) có cả phiên bản trả phí và miễn phí. Điều đó sẽ làm mọi thứ bạn cần nó.

3
Norcross

Bạn có thể sửa đổi biểu mẫu đăng ký người dùng WordPress tiêu chuẩn để yêu cầu nhiều dữ liệu hơn tên người dùng + địa chỉ email thông thường.

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'] );
}

Đặt ở trên trong functions.php của bạn.

Một plugin tuyệt vời để hiển thị danh sách người dùng có thể tùy chỉnh là Danh sách người dùng AmR

( Chỉnh sửa: Đã thêm công cụ đăng ký người dùng.)

( Chỉnh sửa 2: Đã thêm dữ liệu tùy chỉnh thường không được lưu bởi WordPress.)

2
Doug

Hoặc sử dụng BuddyPress, có tất cả các tính năng này và hơn thế nữa sau khi tùy chỉnh

2
bueltge