Publish your project for free and start receiving offers from freelance contractors in serveral minutes after publication!

Подправить самописный модуль WP

closed without completion


После переноса сайта с одного хостинга на другой, перестала работать одна из функций плагина.
Суть такая..
Существует страница со сбором средс, на ней есть кнопка "пожертвовать". В админке можно прописать конкретную ссылку для этой кнопки. По умолчанию в ней стоит переход на оплату. На данный момент когда вставляется другая ссылка, все перестает работать.
Нужно посмотреть файл плагина и сказать в чем причина. Желательно все сделать через TeamViewer.

Подробности после выбора исполнителя.




Make a proposal!

The client doesn't want to make prepayment? Offer him to make a payment via Safe to avoid possible fraud.

  1. 1 day250 ₴
    Александр Старцев
     586  verified   5   0

    Готов посмотреть

    Ukraine Kyiv | 5 February 2016 |
  2. 1 day200 ₴
    Виталий Кондратюк
     1551   31   0

    Доброго дня! Пишіть, виправлю помилку.

    Ukraine Khmelnitskyi | 5 February 2016 |
  • Пришлите исходный код плагина, иначе ничего нельзя сдеоать

  • Oleg F — project author
    Complain | 5 February 2016 |

    <?php


     add_action('init', 'cptui_register_my_cpt_ignition_product');

    function cptui_register_my_cpt_ignition_product() {

    register_post_type('ignition_product', array(

    'label' => 'Projects',

    'description' => '',

    'public' => true,

    'show_ui' => true,

    'show_in_menu' => true,

    'capability_type' => 'post',

    'map_meta_cap' => true,

    'hierarchical' => false,

    'rewrite' => array('slug' => 'ignition_product', 'with_front' => true),

    'query_var' => true,

    'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes','post-formats'),

    'labels' => array (

     'name' => 'Projects',

     'singular_name' => 'Project',

     'menu_name' => 'Projects',

     'add_new' => 'Add Project',

     'add_new_item' => 'Add New Project',

     'edit' => 'Edit',

     'edit_item' => 'Edit Project',

     'new_item' => 'New Project',

     'view' => 'View Project',

     'view_item' => 'View Project',

     'search_items' => 'Search Projects',

     'not_found' => 'No Projects Found',

     'not_found_in_trash' => 'No Projects Found in Trash',

     'parent' => 'Parent Project',

    )

    ) ); }


    add_shortcode('fb_widget','fb_widget');

    function fb_widget($attr,$content)

    {


    return '<h3>'.$attr['title'].'</h3><iframe src="//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpages%2F%D0%91%D0%B0%D0%BD%D0%BA-%D1%88%D0%BA%D1%96%D1%80%D0%B8/816914558360984&width=1000&height=499&colorscheme=light&show_faces=true&header=false&stream=false&show_border=false" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:1000px; height:370px;" allowTransparency="true"></iframe>';

    }



    function id_projectPageWidget()

    {

    global $post;


    $url = get_field('narodniy_url',$attr['post_id']);

    $res = parse_narod($url, $attr['post_id']);

    $str = '

    <div class="id-widget id-full" >

    <div class="product-wrapper clearfix">

    <div class="pledge">

    <div class="krown-pie large" data-color="#43B3CF"><div class="holder"><span class="value" data-percent="'.$res[3].'">'.$res[3].'<sup>%</sup></span></div></div>

    </div>



    <div class="clearing"></div>


    <div class="rholder">

    <div class="rpdata ginfo">

    '.$res[0].'

    </div>


    <div class="rpdata ginfo">

    '.$res[1].'

    </div>


    </div>




    <div class="id-product-proposed-end">

    '.$res[4].'

    </div>


    <div class="btn-container" style="display: block;">

    '.$res[2].'

    </div>


    </div>

    </div>

    ';


    return $str;

    }



    add_shortcode("n_info",'n_info');

    function n_info($attr, $content)

    {

    $url = get_field('narodniy_url',$attr['post_id']);

    $res = parse_narod($url, $attr['post_id']);

    $str = '

    <div class="id-widget id-full" >

    <div class="product-wrapper clearfix">

    <div class="pledge">

    <div class="krown-pie large" data-color="#43B3CF"><div class="holder"><span class="value" data-percent="'.$res[3].'">'.$res[3].'<sup>%</sup></span></div></div>

    </div>



    <div class="clearing"></div>


    <div class="rholder">

    <div class="rpdata ginfo">

    '.$res[0].'

    </div>


    <div class="rpdata ginfo">

    '.$res[1].'

    </div>


    </div>




    <div class="id-product-proposed-end">

    '.$res[4].'

    </div>


    <div class="btn-container" style="display: block;">

    '.$res[2].'

    </div>


    </div>

    </div>

    ';


    return $str;

    }


    add_shortcode("payment_form","payment_form");

    function payment_form($attr,$content)

    {



    //print_r($post);


     $post_id = $_GET['d'];

    $original_ID = icl_object_id( $post_id, 'ignition_product', false, ICL_LANGUAGE_CODE );

    $post = get_post($original_ID);


    if(!$post)

    {

    return '<script type="text/javascript">document.location="/";</script>';

    }

    //$original_ID = $post->ID;


    $private_key = 'dqOvWKTODezRF5GRTLbHOyvg2u6sCCdH4oujOlG5';

    $public_key = 'i34953322938';


    $server_url = 'http://skin-bank.shershnyov.com/pm.php?p='.$original_ID;

    $result_url = 'http://skin-bank.shershnyov.com/?p='.$post_id;

    $type = 'donate';

    $order_id = $post_id.'-'.time();

    $description = $post->post_title;



    /*

    $private_key.

    $amount.

    $currency.

    $public_key.

    $order_id.

    $type.

    $description.

    $result_url.

    $server_url

    */


     $str_to_sign = $private_key.'150UAH'.$public_key.$order_id.$type.$description.$result_url.$server_url;

     $signature = base64_encode(sha1($str,1));







    //$post_id = $original_ID;





    $str = '

    <header id="page-title" class="resettitle"><h1 class="title">'.__('Donation','narod').'<br />'.$post->post_title.'</h1></header>

    <div id="tab-liqpay" class="pmform_'.ICL_LANGUAGE_CODE.'">

    <div class="tab-content-inner">

    <form method="post" action="https://www.liqpay.com/api/pay" accept-charset="utf-8" class="payment_form">

    <div class="home-featured-payment_box project_page">

     <input value="150" id="get_donate_amount" name="amount" class="only_num" type="number">

     <span class="cs_wrap">

     <select name="currency" id="get_donate_currency">

     <option value="UAH">UAH</option>

     <option value="USD">USD</option>

     <option value="EUR">EUR</option>

     <option value="RUB">RUB</option>

     </select>

     </span>



    <input name="public_key" value="'.$public_key.'" type="hidden">

    <input name="description" value="'.$description.'" type="hidden">

    <input name="type" value="'.$type.'" type="hidden">

    <input name="language" value="ru" type="hidden">

    <input name="result_url" value="'.$result_url.'" type="hidden">

    <input name="server_url" value="'.$server_url.'" type="hidden">

    <input name="sandbox" value="0" type="hidden">

    <input id="project_donate" class="btn btn-submit" alt="pay" value="'.__('Make donation','narod').'" name="btn_text" type="submit">


     <div class="card-logo"></div>

    </div>

    </form>

     </div>

     <div class="payment-info">

    <i class="fa fa-lock"></i><span>'.__('Secure and fast payment via LiqPay using PrivatBank cards <strong>Visa</strong> and <strong>MasterCard</strong>','narod').'</span>

    </div>

    </div>






    <script type="text/javascript" src="'.get_template_directory_uri().'/js/jquery.custom-select.min.js?ver=1.0"></script>

    <script type="text/javascript">

    jQuery(document).ready(function() {

    jQuery("#get_donate_currency").customSelect();

    });

    </script>


    ';





    return $str;




    }




    function parse_narod($url, $post_id)

    {

    //$original_ID = icl_object_id( $post_id, 'ignition_product', false, 'uk' );


    //$post_id = $original_ID;

    if($url!='')

    {

    $str = file_get_contents($url);


    $str = explode('<ul class="first_ul ab_counter">', $str);

    $str = explode('</ul>',$str[1]);



    $str = explode('</li>',$str[0]);

    $str[0] = strip_tags($str[0],'<h2><span>');

    $str[1] = strip_tags($str[1],'<h2><span>');

    $str[3] = strip_tags($str[3],'<h2><span><form><input>');

    $str[3] = str_replace('"ab_button"','"main-btn krown-button medium color"',$str[3]);

    $str[2] = explode('</span>',$str[2]);

    $str[20] = strip_tags($str[2][0]);

    $str[21] = explode('<div class="last_upd">',$str[2][1]);

    $str[21] = strip_tags($str[21][1]);

    unset($str[2]);

    unset($str[4]);

    unset($str[5]);




    $str = array_values($str);

    }

    else

    {



    $str = array();


    $pmurl = '/donate/';

    if( ICL_LANGUAGE_CODE == 'en') $pmurl = '/donate-en/';



     $str[0] = '<h2>'.get_field('paid_people', $post_id).' '.__('persons','narod').'</h2><span>'.__('have made their donations already','narod').'</span>';

     $str[1] = '<h2><span data-count="'.get_field('paid', $post_id).'" class="perc">'.number_format(get_field('paid', $post_id),0,'.',' ').'</span> '.__('UAH','narod').'</h2><span>'.__('Total required','narod').' <span class="full">'.number_format(get_field('sum', $post_id),0,'.',' ').'</span> '.__('UAH','narod').'</span>';

     $str[2] = '<form method="get" class="to_payment_form" action="'.($url==''?$pmurl:$url).'">

     <input type="hidden" value="'.$post_id.'" name="d" />

    <input type="submit" value="'.__('Make donation','narod').'" class="main-btn krown-button medium color">

    </form>';



     $str[4] = __('Updated').' '.date("d-m-Y").' о '.date("h:i");

    $str[3] = round(get_field('paid', $post_id)/get_field('sum', $post_id)*100);


    /*

     $str[0] = '<h2>'.get_field('paid_people', $post_id).' '._('осіб').'</h2><span>'._('вже зробили свій внесок').'</span>';

     $str[1] = '<h2><span data-count="'.get_field('paid', $post_id).'" class="perc">'.number_format(get_field('paid', $post_id),0,'.',' ').'</span> '._('грн').'</h2><span>'._('Усього потрібно').' <span class="full">'.number_format(get_field('sum', $post_id),0,'.',' ').'</span> '._('грн').'</span>';

     $str[2] = '<form method="get" class="to_payment_form" action="/donate/">

     <input type="hidden" value="'.$post_id.'" name="d" />

    <input type="submit" value="Зробити внесок" class="main-btn krown-button medium color">

    </form>';



     $str[4] = _('Оновлено').' '.date("d-m-Y").' о '.date("h:i");

    $str[3] = round(get_field('paid', $post_id)/get_field('sum', $post_id)*100);

    */

    }


    return $str;

    }




    add_action('init', function(){



    //parse_narod('http://www.narodniy.org.ua/btr/');


    });

  • Oleg F — project author
    Complain | 5 February 2016 |

    Суть в том, что narodniy_url как доп. поле отвечает за замену стандартной ссылки. Проблема в том, что после прописывания ссылки в поле narodniy_url появляется вот такая проблема http://prntscr.com/9yedan Если ссылку убрать все становится на место http://prntscr.com/9yedpl

    А должно заменится

  • У вас там подключена не ссылка, а целая форма оплаты liqpay:

    <form method="post" action="https://www.liqpay.com/api/pay" accept-charset="utf-8" class="payment_form">    
                    <div class="home-featured-payment_box project_page">
                          <input value="150" id="get_donate_amount" name="amount" class="only_num" type="number">
                          <span class="cs_wrap">
                            <select style="width: 120px; position: absolute; opacity: 0; height: 64px; font-size: 30px;" class="hasCustomSelect" name="currency" id="get_donate_currency">
                                  <option value="UAH">UAH</option>
                                  <option value="USD">USD</option>
                                  <option value="EUR">EUR</option>
                                  <option value="RUB">RUB</option>
                            </select><span style="display: inline-block;" class="customSelect"><span style="width: 165px; display: inline-block;" class="customSelectInner">UAH</span></span>
                          </span>


                        <input name="public_key" value="i34953322938" type="hidden">
                        <input name="description" value="Банк шкіри. Лікування опіків" type="hidden">
                        <input name="type" value="donate" type="hidden">
                        <input name="language" value="ru" type="hidden">
                        <input name="result_url" value="http://skin-bank.shershnyov.com/?p=45" type="hidden">
                        <input name="server_url" value="http://skin-bank.shershnyov.com/pm.php?p=45" type="hidden">
                        <input name="sandbox" value="0" type="hidden">
                        <input id="project_donate" class="btn btn-submit" alt="pay" value="Зробити внесок" name="btn_text" type="submit">

                          <div class="card-logo"></div>
                    </div>
                </form>

  • Для лучшего понимания сути проблемы:

    1. сделайте скриншот в админке той области, где вы указаываете ссылку, допишите что было и что вы вставили

  • Oleg F — project author
    Complain | 5 February 2016 |

    Там ничего не было. Вот здесь можно выбрать и или вписать новое доп. поле http://prntscr.com/9z9ty8 Они добавляются через модуль. Ну и я вписал http://prntscr.com/9z9tuv и туда вставляю ссылку и выдает ошибку. Так как именно это доп. поле обрабатывает, походу, тот модуль что я скинул. 

    Когда доп. поле пустое ссылка показывается именно по оплате. А когда вставляю нужно чтобы показывалась вставленная, а выдает ошибку.

  • Ключевой момент - 2 строчки

    $url = get_field('narodniy_url',$attr['post_id']);

    $res = parse_narod($url, $attr['post_id']);

    Первая по-моему добавляет параметр post_id, а вторая загружает страницу, указанную в URL и пытается из неё забрать часть контента, но поскольку маска содержимого на двух сайтах разная, то её необходимо довести до ума.

    Только вот повторюсь, изменив ссылку, необходимо ли сохранить поддержку предыдущего URL или только нового?


  • Oleg F — project author
    Complain | 5 February 2016 |

    Скорее всего, нужно чтобы отключался вывод стандартной кнопки с оплатой, а заменялся другой ссылок, когда доп поле активно.

  • Поменяйте ссылку просто в самом плагине, строка

    $str[2] = '<form method="get" class="to_payment_form" action="'.($url==''?$pmurl:$url).'">


    здесь '.($url==''?$pmurl:$url).' можно заменить на любую ссылку и по новой установить плагин.

  • Oleg F — project author
    Complain | 5 February 2016 |

    Дело в том, что нужно чтобы на одних страницах была стандартная ссылка, а в других внешняя. Все же нужно, чтобы ссылка можно было вставлять через доп. поле.

    Сайт был полностью рабочий, после переноса произошел какой-то сбой. Предположительно именно в этом модуле. 


  • В функции paste_narod есть две подфункции, одна - парсинг страницы, а вторая - вывод формы оплаты со ссылкой /donate/

    Можно убрать первую подфункцию, тогда получится вот такой код:

    http://pastebin.com/kNEv5sEF

    В этом случае форма оплаты будет либо на /donate/ либо на указанный URL в поле narodniy_url

    Более точно смогу ответить, если вы покажете адрес страницы, на которой эта форма находится.

  • Add

Client
Oleg F
Ukraine Kyiv
Project published
5 February 2016
166 views
Contractor location
Share