Ошибка при отображении комментариев с помощью polylang-comments-merger
Я установил плагин https://github.com/rbnet/polylang-comments-merger с моим сайтом WooCommerce, чтобы объединить комментарии, сделанные к продуктам, чтобы он отображал и считал комментарии с обоих языков на обеих страницах продукта. Плагин "выпущен" как есть "и никакой поддержки не предоставляется", поэтому я подумал, что я бы попросил кого-то здесь о помощи.
После установки плагина я получаю его для объединения комментариев, чтобы в двух языковых версиях продукта отображались одинаковые комментарии. Однако счетчик на вкладке комментариев не меняется (на одном языке написано "Комментарии (21)", на другом - "Комментарии (0)", а над комментариями также появляется сообщение об ошибке:
Обратите внимание: get_translations была вызвана неправильно в.../woocommerce/wp-includes/class-wp-hook.php в строке 286: вызов $polylang->model->get_translations() объявлен устаревшим в Polylang 1.8, используйте PLL()->model->post->get_translations() вместо этого. Обработчик ошибок в.../woocommerce/wp-content/plugins/polylang/include/model.php в строке 616
Файл php для плагинов выглядит следующим образом:
<?php
/**
* @package Polylang_Comments_Merger
*
* @wordpress-plugin
* Plugin Name: Polylang Comments Merger
* Plugin URI: http://rbnet.it
* Description: Merges comments from all translations of the posts in Polylang. <strong>Absolutely no support!</strong>
* Version: 0.5.7
* Author: Roberto Bolli
* Author URI: http://rbnet.it
* License: GPL-2.0+
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
* Text Domain: rbnet-pcmerger
* Domain Path: /languages/
*/
// Built using code from no longer maintained WPML Comment Merging plugin: http://wordpress.org/extend/plugins/wpml-comment-merging/
// Thanks to Rhialto (http://rhialto.com) for the hints and Jonathan (https://wordpress.org/support/users/jonathanmoorebcsorg/) for original code.
// Safety check
add_action( 'admin_init', 'rbnet_test_polylang_installation' );
function rbnet_test_polylang_installation() {
if ( is_admin() && current_user_can( 'activate_plugins' ) && !is_plugin_active( 'polylang/polylang.php' ) ) {
add_action( 'admin_notices', 'rbnet_plugin_notice' );
deactivate_plugins( plugin_basename( __FILE__ ) );
if ( isset( $_GET['activate'] ) ) {
unset( $_GET['activate'] );
}
}
}
function rbnet_plugin_notice() {
$class = 'notice notice-error';
$message = __( '<strong>Polylang Comments Merger</strong> requires <strong>Polylang</strong> plugin to be installed and active.', 'rbnet-pcmerger' );
printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
}
// Define constants
if ( !defined( 'RBNETPM_BASE' ) ) {
define( 'RBNETPM_BASE', plugin_basename( __FILE__ ) );
}
// Load plugin textdomain
if ( !function_exists( 'rbnet_load_textdomain' ) ) {
function rbnet_load_textdomain() {
$path = dirname( plugin_basename( __FILE__ ) ) . '/languages/';
load_plugin_textdomain( 'rbnet-pcmerger', false, $path );
}
add_action( 'init', 'rbnet_load_textdomain' );
}
// Sort merged comments
function sort_merged_comments($a, $b) {
return $a->comment_ID - $b->comment_ID;
}
// Merge comments on frontend
function merge_comments($comments, $post_ID) {
global $polylang;
$translationIds = $polylang->model->get_translations('post', $post_ID);
foreach ( $translationIds as $key=>$translationID ){
if( $translationID != $post_ID ) {
$translatedPostComments = get_comments( array('post_id' => $translationID, 'status' => 'approve', 'order' => 'ASC') );
if ( $translatedPostComments ) {
$comments = array_merge($comments, $translatedPostComments);
}
}
}
// re-sort merged comment array
if ( count($translationIds) >1 ) {
usort($comments, 'sort_merged_comments');
}
return $comments;
}
add_filter('comments_array', 'merge_comments', 100, 2);
// Count merged comments - In AdminCP leaves comments per translations
function merge_comment_count($count, $post_ID) {
if ( !is_admin() ){
global $polylang;
$translationIds = $polylang->model->get_translations('post', $post_ID);
foreach ( $translationIds as $key=>$translationID ){
if( $translationID != $post_ID ) {
$translatedPost = get_post($translationID);
if ( $translatedPost ) {
$count = $count + $translatedPost->comment_count;
}
}
}
}
return $count;
}
add_filter('get_comments_number', 'merge_comment_count', 100, 2);
// Stop Polylang filtering comments
function polylang_remove_comments_filter() {
global $polylang;
remove_filter('comments_clauses', array(&$polylang->filters, 'comments_clauses'));
}
add_action('wp','polylang_remove_comments_filter');
// Add custom meta link on plugin list page
if ( !function_exists( 'rbnet_meta_links' ) ) {
function rbnet_meta_links( $links, $file ) {
if ( $file == RBNETPM_BASE ) {
$links[] = '<a href="https://www.paypal.me/RobertoBolli/2" target="_blank" title="' . __( 'Donate', 'rbnet-pcmerger' ) . '"><strong>' . __( 'Donate', 'rbnet-pcmerger' ) . '</strong></a>';
}
return $links;
}
add_filter( 'plugin_row_meta', 'rbnet_meta_links', 10, 2 );
}
Я пытался заменить $polylang->model->get_translations('post', $post_ID);
на линии 96 и 69 с PLL()->model->post->get_translations('post', $post_ID)
вместо. Это избавляет от ошибки, но вместо этого комментарии больше не объединяются.
Я что-то пропустил? Или есть более эффективные способы объединения комментариев?