Ответы в темах

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Проблема оказалась с wp_list_comments, эта функция возвращает помимо html комментариев в коде еще и переносы строк \n — нужно было на выходе почистить.
    Вместо str_ireplace воспользовался preg_replace — все работает.

    Есть две фукнции в functions.php
    Первая:

    function select_words($comment, $args, $depth) {  
    $GLOBALS['comment'] = $comment; 
    if( get_field('comment_name', $comment) ) {
        $hmtl_var = get_field('comment_name', $comment);
        $hmtl_find = "$hmtl_var|"; 
        echo $hmtl_find;
    }
    }

    Вторая;

    function short_comment($comment, $args, $depth) {  
    $GLOBALS['comment'] = $comment;
    if( get_field('comment_name', $comment) ){
        $comment_select = get_field('comment_name', $comment);
        $html_cod = "<span class='find_id' title='$comment->comment_content' data-id='$comment->comment_ID'>$comment_select</span>|";
        echo $html_cod;
    }
    }

    Они вызываются в следующем коде:

    function replace_content($content){
        $query_id = get_queried_object_id(); 
        $comments = get_comments(array(
                    'status' => 'approve',
                    'post_id' => $query_id
                ));
        $echo_arr = wp_list_comments(array(
                    'style' => '',
                    'callback' =>'select_words',
                    'echo' => false,      
        ), $comments);
        $echo_arr = explode("|", $echo_arr); // массив для поиска
        
        
        $echo_arr_exit = wp_list_comments(array(
                    'style' => '',
                    'callback' =>'short_comment',
                    'echo' => false,      
        ), $comments);
        $echo_arr_exit = explode("|", $echo_arr_exit); // массив для замены
          
       $content = str_ireplace($echo_arr,$echo_arr_exit,$content);
      
      return $content;
    
    }
    add_filter('the_content','replace_content');

    Почему то после выполнения этого кода изменяется только первое совпадение. Первая функция возвращает массив, если этот массив создать вручную с теми же значениями, то все выводится как надо.

    Это же не проблема, раз плагины не подходят. Вам нужно создать две страницы для сайта, и два шаблона для этих страниц, в одном из них будет форма регистрации, при заполнении которой перекинет на вторую страницу, на которой будет сообщение, после чего юзера вернет туда откуда он пришел.
    Только если вы сами не можете написать подобное то вам в поиск специалистов на этом форуме. Кто угодно напишет, только стимулировать надо.

Просмотр 3 ответов — с 1 по 3 (всего 3)