ฉันกำลังสร้างแก้ไขส่วนหน้าโพสต์รูปแบบการใช้jQuery UI การจัดเรียง
โพสต์มีการจัดวางในกล่องขนาด 300px x 250px เหนือภาพพื้นหลัง โพสต์ถูกสร้างและแก้ไขโดยใช้ผู้ดูแลระบบ WordPress แต่ฉันต้องการอนุญาตให้ผู้ดูแลไซต์ปรับลำดับของกล่องโดยใช้ส่วนติดต่อแบบลากและวางที่ส่วนหน้า
ฉันมีส่วนลากและวางเรียงได้ทำงาน แต่ต้องเกิดขึ้นกับวิธีการบันทึกสถานะ (คำสั่งซื้อ) ของกล่อง นึกคิดฉันต้องการที่จะสามารถบันทึกรัฐเป็นตัวเลือกและสร้างมันลงในแบบสอบถาม
แบบสอบถามสำหรับการโพสต์เป็น WP_Query ง่าย ๆ ที่ได้รับข้อมูลจากกล่องเมตาที่กำหนดเองเพื่อกำหนดรูปแบบกล่องแต่ละแบบ:
$args= array(
'meta_key' => 'c3m_shown_on',
'meta_value'=> 'home' );
$box_query = new WP_Query($args); ?>
<ul id="sortable">
<?php
while ($box_query->have_posts()) : $box_query->the_post(); global $post; global $prefix;
$box_size = c3m_get_field($prefix.'box_size', FALSE);
$box_image = c3m_get_field($prefix.'post_box_image', FALSE);
$overlay_class = c3m_get_field($prefix.'overlay_class', FALSE);
if ( c3m_get_field($prefix.'external_link', FALSE) ) {
$post_link = c3m_get_field($prefix.'external_link', FALSE);
} else
{ $post_link = post_permalink();
} ?>
<li class="<?php echo $box_size;?> ui-state-default">
<article <?php post_class() ?> id="post-<?php the_ID(); ?>">
<?php echo '<a href="'.$post_link.'" ><img src="'.esc_url($box_image).'" alt="Image via xxxxx.com" /></a>'; ?>
<div class="post-box <?php echo $overlay_class;?>">
<?php if ( c3m_get_field( $prefix.'text_display', FALSE) ) { ?>
<h2><a href="<?php echo $post_link?>"><?php the_title();?></a></h2>
<p><?php echo substr($post->post_excerpt, 0, 90) . '...'; ?></p>
<?php } ?>
</div>
</article>
</li>
<?php endwhile; ?>
</ul>
</section>
จาวาสคริปต์เป็นเพียงคำแนะนำพื้นฐานในการเรียงลำดับเริ่มต้น
jQuery(document).ready(function() {
jQuery("#sortable").sortable();
});
มีวิธีการใช้คุกกี้เพื่อบันทึกสถานะ แต่ฉันต้องปิดการใช้งานการลากและวางแบบเรียงลำดับสำหรับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบดังนั้นฉันจึงต้องบันทึกลงในฐานข้อมูลจริงๆ
ฉันกำลังมองหาวิธีที่สร้างสรรค์และใช้งานได้มากที่สุดและจะมอบรางวัล 100 แต้มให้กับคำตอบที่ดีที่สุด
ปรับปรุง:
ฉันได้รับคำตอบของโซมาติกที่ทำงานกับการเปลี่ยนแปลงเล็กน้อย
ajaxurl ไม่ได้คืนค่าในหน้าผู้ดูแลระบบดังนั้นฉันจึงใช้wp_localize_script( 'functions', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
เพื่อกำหนดค่าและเปลี่ยนบรรทัดจาวาสคริปต์ภายใต้ตัวเลือกเพื่อ:
url: MyAjax.ajaxurl,
หากต้องการ จำกัด การเข้าถึงเพื่อจัดเรียงคำสั่งซื้อสำหรับผู้ดูแลระบบเท่านั้นฉันได้เพิ่มเงื่อนไขในฟังก์ชัน wp_enqueue_script ของฉัน:
function c3m_load_scripts() {
if ( current_user_can( 'edit_posts' ) ) {
wp_enqueue_script( 'jquery-ui' );
wp_enqueue_script( 'functions', get_bloginfo( 'stylesheet_directory' ) . '/_/js/functions.js', array( 'jquery', 'jquery-ui' ), false);
wp_localize_script( 'functions', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}
}
ฉันจะทำการทดสอบอีกเล็กน้อยและทำเครื่องหมายคำถามนี้ว่าได้รับการแก้ไขแล้วและให้รางวัลความโปรดปราน