
在wordpress开发中,我们经常需要在文章列表页为每个条目提供特定的交互功能。本教程旨在解决以下核心需求:
我们将利用WordPress的内置功能、jQuery UI Dialog库以及AJAX技术来实现这一目标。
首先,我们需要在WordPress文章循环中设置按钮,并在页面上放置一个用于弹窗的表单结构。
在您的自定义文章类型模板文件(如archive-property.php或通过WP_Query构建的页面)中,遍历文章时为每个文章添加按钮,并通过HTML5的data-*属性存储文章ID和标题。
<?php
// 假设您正在一个自定义文章类型 'property' 的循环中
$args = array(
'post_type' => 'property',
'posts_per_page' => -1, // 显示所有文章
'post_status' => 'publish'
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
$post_id = get_the_ID();
$post_title = get_the_title();
?>
<div class="property-item">
<h2><?php echo esc_html( $post_title ); ?></h2>
<p>文章ID: <?php echo esc_html( $post_id ); ?></p>
<!-- 其他房产信息 -->
<button class="btn btn-primary submit-offer-btn"
data-post-id="<?php echo esc_attr( $post_id ); ?>"
data-post-title="<?php echo esc_attr( $post_title ); ?>">
提交报价
</button>
</div>
<?php
endwhile;
wp_reset_postdata(); // 重置查询
else :
echo '<p>没有找到房产信息。</p>';
endif;
?>说明:
将您的完整表单放置在一个隐藏的 div 容器中,该容器应该在页面上只出现一次,而不是在循环内部。这个 div 将被jQuery UI Dialog转换为弹窗。
<div id="offerFormDialog" style="display:none;">
<h2 class="text-center">提交您的报价</h2>
<form id="offerForm" method="POST" enctype="multipart/form-data">
<div class="form-group row">
<label class="col-md-12" for="name"><?php esc_html_e( 'Name', 'ivproperty' ); ?><span class="red-star">*</span></label>
<input class="col-md-12" id="name" name="name" type="text" required>
</div>
<div class="form-group row">
<label for="email" class="col-md-12"><?php esc_html_e( 'Email', 'ivproperty' ); ?><span class="red-star">*</span></label>
<input class="col-md-12" name="email" type="email" required>
</div>
<div class="form-group row">
<label for="price" class="col-md-12"><?php esc_html_e( 'Price', 'ivproperty' ); ?><span class="red-star">*</span></label>
<input class="col-md-12" name="price" type="number" required>
</div>
<div class="form-group row">
<label for="purchase_type" class="col-md-12"><?php esc_html_e( 'Purchase Type', 'ivproperty' ); ?><span class="red-star">*</span></label>
<select class="col-md-12" name="purchase_type" required>
<option disabled selected value> -- select an option -- </option>
<option value="Cash">Cash</option>
<option value="Conventional Loan">Conventional Loan</option>
<option value="FHA Loan">FHA Loan</option>
<option value="MSHDA Conventional Loan">MSHDA Conventional Loan</option>
<option value="MSHDA FHA Loan">MSHDA FHA Loan</option>
<option value="Land Contract">Land Contract</option>
</select>
</div>
<div class="form-group row">
<label for="closing_date"><?php esc_html_e( 'Closing Date', 'ivproperty' ); ?><span class="red-star">*</span></label>
<input class="col-md-12 date_box" name="closing_date" type="date" required>
</div>
<div class="form-group row">
<label for="concessions_amount"><?php esc_html_e( 'Concessions Amount', 'ivproperty' ); ?></label>
<input class="col-md-12" name="concessions_amount" type="number">
</div>
<div class="form-group row">
<label for="inspection_period" class="col-md-12"><?php esc_html_e( 'Inspection Period', 'ivproperty' ); ?><span class="red-star">*</span></label>
<input class="col-md-6 date_box" name="insp_from" type="date" required>
<input class="col-md-6 date_box" name="insp_to" type="date" required>
</div>
<div class="form-group row">
<label for="seller_occupancy" class="col-md-12"><?php esc_html_e( 'Seller Occupancy & Charge', 'ivproperty' ); ?></label>
<input class="col-md-6" name="seller_occupancy" type="text" placeholder="Occupancy">
<input class="col-md-6" name="seller_charge" type="number" placeholder="Charge">
</div>
<div class="form-group row">
<label for="emd" class="col-md-12"><?php esc_html_e( 'EMD', 'ivproperty' ); ?><span class="red-star">*</span></label>
<input class="col-md-12" name="emd" type="number" placeholder="Earnest Money Deposit" required>
</div>
<div class="form-group row">
<label for="home_warranty" class="col-md-12"><?php esc_html_e( 'Home Warranty', 'ivproperty' ); ?><span class="red-star">*</span></label>
<select class="col-md-12" name="home_warranty" required>
<option disabled selected value> -- select an option -- </option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
</div>
<div class="form-group row">
<label for="attachment" class="col-md-12"><?php esc_html_e( 'Attachment', 'ivproperty' ); ?></label>
<input type="file" name="attachment">
</div>
<!-- 隐藏字段用于存储文章ID -->
<input type="hidden" name="property_id" id="property_id_hidden_field" value="">
<!-- 用于显示AJAX消息的区域 -->
<div id="form_messages" style="margin-top: 15px;"></div>
<div class="modal-footer">
<input type="submit" name="submit_offers" class="btn btn-secondary col-md-12 ml-2">
</div>
</form>
</div>说明:
我们将使用jQuery UI Dialog来创建弹
以上就是WordPress自定义文章按钮弹出表单与AJAX提交指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号