Помощь WordPress Comments Import & Export - как импортировать комментарии в произвольные типы записей?

Moris_Frenkel

Создатель
Регистрация
25 Июл 2012
Сообщения
28
Реакции
2
Здравствуйте!

Проблема такая - имею на сайте около 10 пользовательских типов записей (custom post types), для записей каждого типа хочу импортировать комментарии. Нашёл плагин - Для просмотра ссылки Войди или Зарегистрируйся, но оказалось, что импорт можно осуществлять только для стандартных постов (posts), для пользовательских - не получается.

Один пользователь уже столкнулся с аналогичной проблемой, и он Для просмотра ссылки Войди или Зарегистрируйся - в коде поменял "post" на свой "news", и у него всё заработало.

А что делать мне, с десятком типов постов, как именно мне мофицировать код?

Помогите пожалуйста.
 

zzallexx

Хранитель порядка
Регистрация
11 Июн 2008
Сообщения
1.053
Реакции
690
Один пользователь уже столкнулся с аналогичной проблемой, и он Для просмотра ссылки Войди или Зарегистрируйся - в коде поменял "post" на свой "news", и у него всё заработало.
создай файл с этим кодом, кинь в корень сайта на Вордпресс, запусти его через браузер получишь список всех типов записей
PHP:
<?php
include($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

foreach ( get_post_types( '', 'names' ) as $post_type ) {
   echo '<p>' . $post_type . '</p>';
}
?>
ну а дальше из этого списка подставляй какие надо вместо post как Для просмотра ссылки Войди или Зарегистрируйся
 

Moris_Frenkel

Создатель
Регистрация
25 Июл 2012
Сообщения
28
Реакции
2
а Для просмотра ссылки Войди или Зарегистрируйся не решает проблему?

Попробую, спасибо.


Импорт комментариев пока не поддерживается, но техподдержка плагина рассказала, что работает над этим.

создай файл с этим кодом, кинь в корень сайта на Вордпресс, запусти его через браузер получишь список всех типов записей

Сделал, всё получилось

ну а дальше из этого списка подставляй какие надо вместо post как Для просмотра ссылки Войди или Зарегистрируйся

if ($cmd_type === 'comment') { $query = "SELECT ID FROM $wpdb->posts WHERE ID = %d AND post_type='post' AND comment_status='open'"; $posts_that_exist = $wpdb->get_col($wpdb->prepare($query,$id)); if (!$posts_that_exist) { return true; } return false;

В выделенном фрагменте, как я понимаю, должны быть вставлены мои типы записей. Как их вставлять:

1) post_type='post, type1, type2'

или

2)
post_type='post', 'type1', 'type2'

?

Простите за глупые вопросы, слаб в кодинге.
 
Последнее редактирование модератором:

zzallexx

Хранитель порядка
Регистрация
11 Июн 2008
Сообщения
1.053
Реакции
690
В выделенном фрагменте, как я понимаю, должны быть вставлены мои типы записей. Как их вставлять:

1) post_type='post, type1, type2'

или

2)
post_type='post', 'type1', 'type2'

?

Простите за глупые вопросы, слаб в кодинге.

post_type='type1' потом post_type='type2' и тд

после каждой замены запуская импорт
 

Moris_Frenkel

Создатель
Регистрация
25 Июл 2012
Сообщения
28
Реакции
2

zzallexx

Хранитель порядка
Регистрация
11 Июн 2008
Сообщения
1.053
Реакции
690
Спасибо!

Я так понимаю, единовременно вписать все типы записей не получится?

Можно через цикл что-то вроде этого, но мне негде проверить да и некогда
PHP:
public function product_id_not_exists($id, $cmd_type) {
        global $wpdb;
        $args = apply_filters('hf_cmt_imp_post_exist_qry_args', array()); //Added a filter if anyone want to restrict import comments for post which has comment_status is closed.
       foreach ( get_post_types( '', 'names' ) as $post_type ) {
   // функция импорта
if ($cmd_type === 'comment') {
            $query = "SELECT ID FROM $wpdb->posts WHERE ID = %d AND post_type=".$post_type; // comment_status removed from query for importing post which has comment_status is closed.
            if ($args) {
                foreach ($args as $key => $value) {
                    $query .= " AND $key='$value'";
                }
            }

            $posts_that_exist = $wpdb->get_col($wpdb->prepare($query, $id));
            if (!$posts_that_exist) {
                return true;
            }
            return false;
        } else {
            $query = "SELECT ID FROM $wpdb->posts WHERE ID = %d AND post_type='product'"; // comment_status removed from query for importing post which has comment_status is closed.
            if ($args) {
                foreach ($args as $key => $value) {
                    $query .= " AND $key='$value'";
                }
            }
            $posts_that_exist = $wpdb->get_col($wpdb->prepare($query, $id));

            if (!$posts_that_exist) {
                return true;
            }
            return false;
        }
    }
    }
менять всю функцию с 664 строки по 694
 
Последнее редактирование:

Moris_Frenkel

Создатель
Регистрация
25 Июл 2012
Сообщения
28
Реакции
2
Можно через цикл что-то вроде этого, но мне негде проверить да и некогда
PHP:
public function product_id_not_exists($id, $cmd_type) {
        global $wpdb;
        $args = apply_filters('hf_cmt_imp_post_exist_qry_args', array()); //Added a filter if anyone want to restrict import comments for post which has comment_status is closed.
       foreach ( get_post_types( '', 'names' ) as $post_type ) {
   // функция импорта
if ($cmd_type === 'comment') {
            $query = "SELECT ID FROM $wpdb->posts WHERE ID = %d AND post_type=".$post_type; // comment_status removed from query for importing post which has comment_status is closed.
            if ($args) {
                foreach ($args as $key => $value) {
                    $query .= " AND $key='$value'";
                }
            }

            $posts_that_exist = $wpdb->get_col($wpdb->prepare($query, $id));
            if (!$posts_that_exist) {
                return true;
            }
            return false;
        } else {
            $query = "SELECT ID FROM $wpdb->posts WHERE ID = %d AND post_type='product'"; // comment_status removed from query for importing post which has comment_status is closed.
            if ($args) {
                foreach ($args as $key => $value) {
                    $query .= " AND $key='$value'";
                }
            }
            $posts_that_exist = $wpdb->get_col($wpdb->prepare($query, $id));

            if (!$posts_that_exist) {
                return true;
            }
            return false;
        }
    }
    }
менять всю функцию с 664 строки по 694

Хорошо, в любом случае спасибо большое!

Попробовал плагин, который посоветовали выше - получилось им импортировать комментарии, проблема решена.
 

okomooo

Писатель
Регистрация
15 Апр 2019
Сообщения
2
Реакции
0
Хорошо, в любом случае спасибо большое!

Попробовал плагин, который посоветовали выше - получилось им импортировать комментарии, проблема решена.
уточни пожалуйста, какой именно плагин помог решить вопрос?
 
Сверху