2013-03-02 5 views
5

के माध्यम से वर्डप्रेस में गतिशील रूप से बदलते नेविगेशन लिंक (अगली और पिछली) मेरे पास मेरी WordPress साइट में, single.php के लूप के अंदर, एक चुनिंदा टैग है जिसमें विकल्प कस्टम श्रेणी के माध्यम से लौटाए गए वर्तमान श्रेणी के पोस्ट हैं ।एजेक्स

चयनित विकल्प बदलने पर, मेरे पास कई जावास्क्रिप्ट फ़ंक्शन हैं जो अच्छी तरह से काम कर रहे हैं, लेकिन उनमें से अंतिम कार्य (function f_next-previous), काम नहीं करता है।

इस फ़ंक्शन का उद्देश्य पृष्ठ को पुनः लोड किए बिना अगले और पिछले लिंक अपडेट करना है।

नेविगेशन लिंक (अगले और पिछले) मेरे टेम्पलेट में करने के लिए कोड रिश्तेदार अच्छी तरह से काम कर रहा है और इसके बाद के संस्करण है:

<div id="nav-above" class="navigation"> 

<div class="nav-previous"><?php previous_post_link('%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/previous.png" />'); ?></div> 

<div class="nav-next"><?php next_post_link('%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/next.png" />'); ?></div> 

</div><!-- #nav-above --> 

इस समारोह के जावास्क्रिप्ट कोड है:

function f_next-previous(id) 
{ 
     $.ajax({ 
     cache: true, 
     type: "GET", 
     timeout: 5000, 
     url: 'wp-content/themes/twentyten/pages/next-previous.php?p='+id, 
     success: function(msg) 
     { 

    $('#nav-above').html(msg); 

     }, 
     error: function(msg) 
     { 
      alert("Your browser broke!"); 
       return false; 
     } 
}); 

} 

फ़ाइल next-previous.php सामग्री है:

<?php 
$p=$_GET['p']; 
require('../../../wp-load.php'); 



$my_query = new WP_Query(); 
$my_query->query(array('post__in' => array($p))); 

if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); ?> 


<div class="nav-previous"><?php previous_post_link('%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/previous.png" />'); ?></div> 
<div class="nav-next"><?php next_post_link('%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/next.png" />'); ?></div> 

<?php 

endwhile; 
endif; 

?> 

इस PHP फ़ाइल का परीक्षण करते समय बी y इसे पी पैरामीटर के लिए एक मान दे रहा है, यह ब्राउज़र में तार्किक परिणाम देता है। Jquery और फ़ंक्शन स्क्रिप्ट अच्छी तरह से शामिल हैं और मेरी वेबसाइट में सभी AJAX ठीक है। इस काम में मुझे क्या याद आ रही है ????

अद्यतन: ध्यान दें कि मेरी single.php फ़ाइल के भाग AJAX कॉल ट्रिगर के लिए जिम्मेदार है:

<form method="post" action=""> 

    <select class="select2" name="" id="" > 
    <option value="<?php the_ID();?>"><?php the_title();?></option> 

    <?php 
global $post; 
$paged = get_query_var('paged') ? get_query_var('paged') : 1; 
$myposts = get_posts("paged=$paged&category=4"); 

foreach($myposts as $post) :?> 

     <option value="<?php the_ID();?>"><?php the_title();?></option> 

     <?php endforeach; 
     wp_reset_postdata(); ?> 

     </select> 
     </form> 
+0

कृपया लॉग इन करने के लिए उच्चतम स्तर फ़ाइल करने और सक्षम करने के लिए PHP त्रुटियों को लॉग करें। यह सोचने से पहले सभी त्रुटियों को हटा दें कि यह क्यों काम नहीं करता है (हाँ इसे त्रुटियां मिलीं, हाँ PHP आपको कहां बताता है)। – hakre

+0

धन्यवाद आपकी त्वरित प्रतिक्रिया के लिए Hakre, लेकिन मैं आपको अच्छी तरह से समझ में नहीं आता। मुझे अपने ब्राउज़र में कोई त्रुटि नहीं है! या शायद मुझे नहीं पता कि कैसे करना है, और लॉगिंग के लिए उच्चतम स्तर को कैसे सक्षम किया जाए ?? –

+0

ठीक है मुझे लगता है कि यह लिंक http://www.w3schools.com/php/php_ref_error.asp मुझे इन विचारों को समझाएगा, मुझे यहां वापस आने के लिए कुछ समय चाहिए और अंतिम परिणाम –

उत्तर

9

पहले, मैं ध्यान दें कि दृष्टिकोण मैं अपने सवाल में mentionned बुरा है चाहता हूँ वर्डप्रेस में AJAX के बारे में बात कर रहे लगभग ट्यूटोरियल के अनुसार। तो मैंने इसे hakre और उसके लिंक: http://codex.wordpress.org/AJAX_in_Plugins#Ajax_on_the_Viewer-Facing_Side की सलाह के आधार पर बदलने का फैसला किया।

दूसरे शब्दों में, मेरी स्थिति के लिए सबसे अच्छा तरीका wp-admin/admin-ajax.php का उपयोग करके वर्डप्रेस में अंतर्निहित AJAX का उपयोग करना है। AJAX अनुरोधों को इस फ़ाइल में निर्देशित किया जाना चाहिए। मुझे पता है कि फ़ाइल नाम का "व्यवस्थापक" भाग थोड़ा भ्रामक है। लेकिन फ्रंट-एंड (देखने वाले पक्ष) के साथ-साथ व्यवस्थापक पैनल में सभी अनुरोधों को विशेष रूप से सुरक्षा के लिए बहुत से लाभों के साथ व्यवस्थापक-AJAX.php में संसाधित किया जा सकता है।

कदम हैं:

1. जावा स्क्रिप्ट कोड कि AJAX अनुरोध कुछ इस तरह देखना चाहिए प्रस्तुत:

$(document).ready(function() { 
     $('.select2').change(function(e) { 
    e.preventDefault(); 

    var v = $('.select2 option:selected').val(); 


      $.ajax({ 
       type: "GET", 
       url: "wp-admin/admin-ajax.php", // check the exact URL for your situation 
       dataType: 'html', 
       data: ({ action: 'nextPrevious', id: v}), 
       success: function(data){ 

       $('#nav-above').html(data); 

       }, 
       error: function(data) 
       { 
       alert("Your browser broke!"); 
       return false; 
       } 

      }); 

    }); 
}); 

ध्यान दें कि आप जे एस डालने में Wordpress के requeriements का सम्मान करना चाहिए स्क्रिप्ट (आमतौर पर पाद लेख में।php से पहले WP-पाद लेख())

2- कार्रवाई हैंडलिंग:

अपने प्लगइन फ़ाइल में आपकी थीम के functions.php में

(या सीधे), जोड़ें:

add_action('wp_ajax_nextPrevious', 'nextPrevious'); 
add_action('wp_ajax_nopriv_nextPrevious', 'nextPrevious'); 

और में परिभाषित इस तरह एक ही फाइल nextPrevious कॉलबैक फ़ंक्शन:

function nextPrevious() { 

$p= $_GET['id']; 
$my_query = new WP_Query(); 

$my_query->query(array('post__in' => array($p))); 

if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); ?> 



<div class="nav-previous"><?php previous_post_link('%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/previous.png" />'); ?></div> 

<div class="nav-next"><?php next_post_link('%link', '<img height="34" src="' . get_bloginfo("template_directory") . '/images/next.png" />'); ?></div> 

<?php endwhile; 
endif;     

wp_reset_query(); 

die(); 

} 

मरने समारोह मत भूलना, यह mandato है ry।

वर्डप्रेस में AJAX के बारे में अधिक जानकारी के लिए, Google पहला पृष्ठ ट्यूटोरियल अच्छा है।

+0

wp_reset_query() है; यहां उपलब्ध है? मरने से पहले आप इसे निष्पादित कर रहे हैं()। तो, यह नहीं है। – BasTaller

संबंधित मुद्दे