गैर-थ्रेडेड टिप्पणी मूल टिप्पणी के लिंक के साथ उत्तर देती है


10

मैं समझाता हूँ कि मैं क्या हासिल करने की कोशिश कर रहा हूँ।

मैं प्रत्येक टिप्पणी के उत्तर लिंक के साथ नियमित गैर-थ्रेडेड (फ्लैट / क्लासिक) टिप्पणियां करना चाहूंगा। जब कोई टिप्पणी का उत्तर देता है तो उत्तर टिप्पणी शीर्ष (या नीचे) पर समाप्त हो जाएगी, क्योंकि यह नवीनतम टिप्पणी है जैसे कि यह डिफ़ॉल्ट गैर-थ्रेडेड टिप्पणियों में होगी, लेकिन डिफ़ॉल्ट गैर-थ्रेडेड टिप्पणी के विपरीत उत्तर को एक लिंक प्रदर्शित करना चाहिए मूल टिप्पणी / लेखक।

वर्डप्रेस फोरम में एक प्रस्तावित समाधान है:

http://wordpress.org/support/topic/reply-to-link-for-chronological-non-threaded-comments

मुझे अभी यह काम करने के लिए नहीं मिला है। मुझे यकीन नहीं है कि पोस्टर किन फाइलों में कोड के विभिन्न टुकड़े रख रहा है। मैंने कोड का उपयोग करने की कोशिश की और एक फ़ंक्शन को comment_post पर हुक दिया:

add_action('comment_post', 'print_reply_link', 10, 2);

function print_reply_link( $comment_id, $approved ){
  if( $approved ){
    $comment = get_comment( $comment_id );
    if ( $comment->comment_parent ) {
    $parent = get_comment( $comment->comment_parent );
    $parent_link = esc_url( get_comment_link( $comment->comment_parent ) );
    printf( ' in reply to <a href="%1$s">%2$s</a>', $parent_link, $parent->comment_author );
    } 
  }
}

इसने "उत्तर में ऑस्ट्रॉनामे " के साथ एक रिक्त पृष्ठ लौटाया । पोस्ट को पुनः लोड करने के बाद एक उत्तर टिप्पणी सही ढंग से दिखाई देती है लेकिन मूल टिप्पणी के किसी भी लिंक के बिना

मेरे कोडिंग कौशल वास्तव में बहुत बुनियादी हैं इसलिए मुझे कोई अच्छा विचार नहीं है कि मुझे कैसे आगे बढ़ना चाहिए। किसी भी मदद के लिए बहुत आभारी होंगे।


की सामग्री क्या है hrefमें aहै कि क्रोम में तत्व का निरीक्षण 'उपकरण (या अपनी पसंद के ब्राउज़र में समान)' के अनुसार जबाब to` में 'इस प्रकार है?
mor7ifer

मैंने बहुत परीक्षण और त्रुटि के बाद समस्या को हल किया है। चाल को सही क्रम में कोड के टुकड़े और टिप्पणियों और फ़ंक्शंस फ़ाइलों में स्थान प्राप्त करना था। sमें %1$sअर्थ यह है कि तर्क के रूप में माना जाता है और एक स्ट्रिंग के रूप प्रस्तुत किया है। यह स्प्रिंट
sarytash 23

3
साइट को व्यवस्थित रखने के लिए और जो भी आपके सामने आता है, उसे जल्दी और कुशलता से दूर करने में मदद करने के लिए आपको एक समाधान के रूप में प्रस्तुत करना चाहिए।
mor7ifer

हां अगर आप एक काम करने वाला समाधान पोस्ट कर सकते हैं जो बहुत अच्छा होगा।
बोरेक बर्नार्ड

1
सहमत हैं, इसे एक्शन में देखना अच्छा लगेगा।
हेलगैथवाइकिंग 23

जवाबों:


4

यह मेरा समाधान है न कि वर्डप्रेस मंचों पर सुझाए गए प्रस्तावित समाधान। यह काफी आसान हो जाता है, लेकिन इसमें कुछ कदम शामिल हैं।

1) wp-admin-> Settings-> चर्चा पर जाएं और थ्रेडेड टिप्पणियों को बंद करें। यह थ्रेडिंग को अक्षम कर देगा, जिसे हम चाहते हैं, लेकिन किसी विशेष टिप्पणी के लिए "उत्तर देने" की क्षमता को भी हटा देंगे। हमें वह वापस लाना होगा।

2) अपनी थीम के फंक्शन्स के नीचे स्क्रिप्ट जोड़ें। एफपीपी या एक प्लगइन।

function load_script_for_fake_threading() {
    if (is_singular()) wp_enqueue_script('comment-reply');
}
add_action('wp_enqueue_scripts','load_script_for_fake_threading');

3) टिप्पणियों की छपाई को wp_list_comments के कॉलबैक द्वारा नियंत्रित किया जाता है । ट्वेंटीवेल twentyeleven_comment()अपने में फ़ंक्शन का उपयोग करता है functions.php। यदि आपके विषय में कॉलबैक नहीं है, तो आपको एक बनाने की आवश्यकता होगी। डिफ़ॉल्ट रूप से, "wp- / / comment-template.php" में वाकर_काम वर्ग के start_el विधि की सामग्री का उपयोग किया जाता है। कॉपी करें या थीम के कॉलबैक की प्रतिलिपि बनाएँ और फ़ंक्शन का नाम बदलें fake_threaded_comment

3) अपने विषय में wp_list_comments फ़ंक्शन खोजें comments.phpऔर कॉलबैक बदलें। यह इस तरह दिखना चाहिए:

wp_list_comments(array('callback'=>'fake_threaded_comment'));

4) अब हम थोड़ा धोखा देने वाले हैं। उस कॉलबैक में, 'fake_threaded_comment', comment_reply_link फ़ंक्शन पर कॉल होना चाहिए । हमें इसे संपादित करने की आवश्यकता है ताकि हम हार्ड-कोडित 'गहराई' और 'max_depth' तर्क पास कर रहे हैं। हम 1 से 'डेप्थ' सेट कर रहे हैं और 2 से max_depth है। इससे हमारा "रिप्लाई" बटन / लिंक वापस आ जाएगा।

comment_reply_link( 
  array_merge( 
    $args, 
      array( 
        'reply_text' => __( 'Reply <span>&darr;</span>', 
        'themetextdomainname' ), 
        'depth' => 1, 
        'max_depth' => 2 
)));

5) मूल टिप्पणी के लिंक को सेटअप करें। कॉलबैक फ़ंक्शन के पक्ष में आपने संदर्भ देखा होगा $comment$comment->comment_parentउत्तर देने वाली टिप्पणी की आईडी है और get_comment_link($comment->comment_parent)मूल टिप्पणी का URL देता है (पूर्ण एंकर मार्कअप नहीं)। get_comment($comment->comment_parent)माता-पिता टिप्पणी डेटा मिलेगा। तो, कुछ इस तरह ...

$pcom = get_comment($comment->comment_parent);
echo '<a href="'.get_comment_link($comment->comment_parent).'">This is a reply to '.$pcom->comment_author.'</a>';

बस। अब आप विशेष टिप्पणियों पर टिप्पणी कर सकते हैं लेकिन एक बार प्रकाशित टिप्पणी लोड आदेश के आधार पर टिप्पणी सूची के अंत में या शुरुआत में दिखाई देगी।

वर्डप्रेस 3.4.1 पर ट्वेंटीलेवेन के साथ परीक्षण किया गया (थोड़ा पुराना लेकिन यह पहले से ही मेरे देव सर्वर पर है)। मुझे यकीन है कि ऐसी चीजें हैं जो थीम या प्लगइन्स इसे तोड़ने के लिए कर सकते हैं, लेकिन मुझे नहीं लगता कि एक अच्छी तरह से व्यवहार किया गया थीम या प्लगइन इसे तोड़ देगा।

वह दिन के लिए मेरा नेक काम है। कृपया मुझे बताएं कि क्या कुछ गलत हुआ है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.