मैं jQuery UI Sortable का उपयोग कर एक फ्रंट एंड पोस्ट लेआउट संपादक का निर्माण कर रहा हूं ।
एक पृष्ठभूमि छवि पर 250px बक्से द्वारा 300px में पदों को निर्धारित किया जाता है। वर्डप्रेस व्यवस्थापक का उपयोग करके पोस्ट बनाए और संपादित किए जाते हैं, लेकिन मैं साइटों के व्यवस्थापक को सामने के छोर पर एक ड्रैग और ड्रॉप इंटरफ़ेस का उपयोग करके बक्से के क्रम को समायोजित करने की अनुमति देना चाहता हूं।
मुझे ड्रैग और ड्रॉप सॉर्टेबल पार्ट काम कर रहा है, लेकिन बॉक्सेस की स्थिति (ऑर्डर) को बचाने के लिए एक तरह से आने की जरूरत है। आदर्श रूप में मैं एक विकल्प के रूप में राज्य को बचाने और क्वेरी में इसे बनाने में सक्षम होना चाहूंगा।
पदों के लिए क्वेरी एक साधारण 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 अंक का इनाम दूंगा।
अपडेट करें:
मुझे एक मामूली बदलाव के साथ काम करने का दैहिक उत्तर मिला ।
अजाक्सुरल गैर-व्यवस्थापक पृष्ठों पर मान वापस नहीं करता है, इसलिए मैंने 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' ) ) );
}
}
मैं थोड़ा और परीक्षण करने जा रहा हूं और इस प्रश्न को हल किया और इनाम को पुरस्कार के रूप में चिह्नित किया।