AI Assistant
Notifications
Clear all

Specify post ID when commenting

9 Posts
4 Users
1 Reactions
3,538 Views
(@mathieufd)
Active Member
Joined: 7 years ago
Posts: 10
Topic starter
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
  [#3614]

Hello,

For a specific and important reason, I needed to add the full comment template of a specific post somewhere else (in another page, or in homepage). I succeed to do that. Now the problem is that when I want to publish a comment, it doesn't publish the comment on the good post. I understand why because when publishing a comment it usually "take" the "natural" post ID when it's on single.php

Is there a way somewhere in your plugin (code) where I could specify a post ID when posting a comment ? At least could you specify which of your file I should look at?

Thank you



   
Quote
Astghik
(@astgh)
Illustrious Member Admin
Joined: 8 years ago
Posts: 6645
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Hi @mathieufd,

you should use the wpdiscuz_js_options hook, and change the value of the wc_post_id key (set it the current post ID ). 

 

 



   
ReplyQuote
(@mathieufd)
Active Member
Joined: 7 years ago
Posts: 10
Topic starter
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Great! 

Where should I look at? (didn't find the hook)



   
ReplyQuote
Astghik
(@astgh)
Illustrious Member Admin
Joined: 8 years ago
Posts: 6645
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@mathieufd,

you can find it in the wp-content/plugins/wpdiscuzclass.WpdiscuzCore.php file. 



   
mathieufd reacted
ReplyQuote
(@mathieufd)
Active Member
Joined: 7 years ago
Posts: 10
Topic starter
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Alright, thank you.

Is there a way to clean the post_ID that have been taking in account so far (without refresh of course) ? I need that because I don't refresh the page when I change the post to be commented. Everything is loaded with ajax. Each time I load your template, I redefined wpdiscuzAjaxObj with the right Post_ID by loading one more time (screenshot) the var wpdiscuzAjaxObj (ajax).

Capture d’écran 2019 03 11 à 15.49.16

So when I change wc_post_id dynamically, the correct post ID is displayed in wpdiscuzAjaxObj (var console gives me the good post ID). So if I open (ajax) the post form with a post ID #123, I will be able to comment for the post #123. But the problem is when I open a second form (ajax) without refreshing, I will be able to comment the seconde post but it will ALSO comment the first one and even if I redefine wpdiscuzAjaxObj, both posts will be commented.

I tried to redefine :

  • var wpdiscuzAjaxObj
  • var wpdiscuzPostId
  • var postId

 

 


   
ReplyQuote
Astghik
(@astgh)
Illustrious Member Admin
Joined: 8 years ago
Posts: 6645
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Hi @mathieufd,

I apologize for the late response. 

Is there a way to clean the post_ID that have been taking in account so far (without refresh of course) ?

Yes, we've checked one more time and found that this cannot be reached yet. We'll take into consideration to change this in future version release. 



   
ReplyQuote
(@diyafury)
New Member
Joined: 6 years ago
Posts: 2
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

Hi,

It's probably a bit late but I found a solution for this... basically I wanted to display wpdiscuz comments for photo posts in popups. My functionality exists in a plugin itself. Here's how I did it.

1. wpdiscuz uses the global $post->ID by default for comment functionality. This means the page id rather than photo id is being used when a comment within a photo popup is posted. So... firstly I needed to find a way to pass the photo id to the wpdiscuz plugin.

2. To do this I looked in wpdiscuz plugins directory > class.WpdiscuzCore.php. A wpdiscuz-ajax-js script is enqueued here and then the variable wpdiscuzAjaxObj is localised. This variable contains an object with the post_id as a property to be used for ajax operations. I specifically needed to update this variable on a click event of each call-to-action child within a comment wrapper element (I wrapped a <div> around each photo's comments area). On the comment wrapper I specified a data-pid attribute containing the photo id. Now the event handler on the child element can reference this when clicked, eg.

$(document).on('click', '.wpdiscuz-sort-button, input.wpd_label__checkbox, .wc_comm_submit, .wc-vote-link, .wc-cta-button', function(e) {

wpdiscuzAjaxObj.wpdiscuz_options.wc_post_id = $(this).closest('.comment-wrap').data('pid');

});

3. The enqueued wpdiscux-ajaz-js script (wpdiscuz.js) sets a local variable in an encapsulated jquery function to point to the value of the localised wpdiscuzAjaxObj variable (that I set on click), i.e.

 

var wpdiscuzPostId = wpdiscuzAjaxObj.wpdiscuz_options.wc_post_id;

This variable is out of reach from my script so I took a copy of this file in my plugin and customised it by commenting out the above assignment and replacing any usages of wpdiscuzPostId with the global variable wpdiscuzAjaxObj.wpdiscuz_options.wc_post_id.

 
4. To use this file I dequeued the original, wpdiscux-ajaz-js in my plugin and enqueue my amended version, custom-wpdiscuz-ajax-js.
 
5. With this newly queued file I needed to localize the existing variable, wpdiscuzAjaxObj against it... to do this, I grabbed the value of the original variable, which is returned as a string, converted it to an array and localised it against my custom custom-wpdiscuz-ajax-js script, eg.
 
global $wp_scripts;

$wpdiscuzOptionsJs = $wp_scripts->get_data('wpdiscuz-ajax-js', 'data');

if ( !is_array($wpdiscuzOptionsJs) ) {

$wpdiscuzOptionsJs = json_decode(str_replace('var wpdiscuzAjaxObj = ', '', substr($wpdiscuzOptionsJs, 0, -1)), true);

}

if ( is_page('xxx') ) {

// Slight modified copy of wpdiscuz needed for this page to accept passed in/popup post ids, rather than using the default post id.

wp_dequeue_script( 'wpdiscuz-ajax-js' );

wp_enqueue_script( 'custom-wpdiscuz-ajax-js', PHOTO_PLUGIN_URL . 'stream/js/wpdiscuz.js', array('jquery'), 'custom.5.3.5', true );

wp_localize_script('custom-wpdiscuz-ajax-js', 'wpdiscuzAjaxObj', array('url' => admin_url('admin-ajax.php'), 'customAjaxUrl' => plugins_url() . '/wpdiscuz/utils/ajax/wpdiscuz-ajax.php', 'wpdiscuz_options' => $wpdiscuzOptionsJs));
}
That's it! So now with every comment call-to-action the global variable is updated with the photo id and used directly by the custom wpdiscuz.js file. I hope this makes sense.
 


   
ReplyQuote
(@diyafury)
New Member
Joined: 6 years ago
Posts: 2
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

I tried to edit my previous post but something went wrong, small changes to the enqueue script (better naming and a slight simplification):

global $wp_scripts;

$wpdiscuzAjaxData = $wp_scripts->get_data('wpdiscuz-ajax-js', 'data');

if ( !is_array($wpdiscuzAjaxData) ) {

$wpdiscuzAjaxData = json_decode(str_replace('var wpdiscuzAjaxObj = ', '', substr($wpdiscuzAjaxData, 0, -1)), true);

}

if ( is_page('xxx') ) {

// Slight modified copy of wpdiscuz needed for this page to accept passed in/popup post ids, rather than using the default post id.

wp_dequeue_script( 'wpdiscuz-ajax-js' );

wp_enqueue_script( 'custom-wpdiscuz-ajax-js', MOP_PHOTO_PLUGIN_URL . 'stream/js/wpdiscuz.js', array('jquery'), 'custom.5.3.5', true );

wp_localize_script( 'custom-wpdiscuz-ajax-js', 'wpdiscuzAjaxObj', $wpdiscuzAjaxData );
}


   
ReplyQuote
Elvina
(@elvina)
Support
Joined: 7 years ago
Posts: 1403
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@diyafury,

Thank you for sharing the information.

 



   
ReplyQuote
Share:
Scroll to top