WordPress主题正在消除我的PayPal购买链接's & &和所有文本之后


WordPress theme is eliminating my PayPal purchase link's ampersand and all text afterwards

我在名为"Faith"(由Chimpstudio制作)的主题中遇到了一个奇怪的错误。当用户发布或更新页面时,PayPal链接不能正确写入数据库

据我所知,写入数据库的值包含在XML数组中,如下所示:

noSimpleXMLElement Object ( [0] => https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick )

应该发布/更新的链接(在点击发布/更新之前)是:

https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick , hosted_button_id = XXXXXXXXXXXXX

"&hosted_button_id=XXXXXXXXXXXXX"没有被保存,这意味着用户无法购买我的客户端的产品。

可能的解决方案:我一直在挖掘主题的。php文件,寻找机会拦截传递给WordPress数据库的值。这个想法是在将变量发送到WP数据库之前包装/编码变量,希望整个URL字符串在URL的"& hostd_button_id =XXXXXXXXXXXXX"部分保持不变。

有什么有用的解决方案或想法吗?

编辑:这可能是admin_functions.php文件中的一段相关代码:
function events_meta_save($post_id) {
    global $wpdb;
    if (empty($_POST["event_ticket_price"])){ $_POST["event_ticket_price"] = "";}
    if (empty($_POST["event_social_sharing"])){ $_POST["event_social_sharing"] = "";}
    if (empty($_POST["event_buy_now"])){ $_POST["event_buy_now"] = "";}
    if (empty($_POST["event_phone_no"])){ $_POST["event_phone_no"] = "";}
    if (empty($_POST["switch_footer_widgets"])){ $_POST["switch_footer_widgets"] = "";}
    if (empty($_POST["event_start_time"])){ $_POST["event_start_time"] = "";}
    if (empty($_POST["event_end_time"])){ $_POST["event_end_time"] = "";}
    if (empty($_POST["event_all_day"])){ $_POST["event_all_day"] = "";}
    if (empty($_POST["event_address"])){ $_POST["event_address"] = "";}
     if (empty($_POST["event_ticket_options"])){ $_POST["event_ticket_options"] = "";}
    if (empty($_POST["event_map"])){ $_POST["event_map"] = "";}

    $sxe = new SimpleXMLElement("<event></event>");

        $sxe->addChild('event_ticket_price', $_POST['event_ticket_price'] );

        $sxe->addChild('event_social_sharing', $_POST["event_social_sharing"]);
        $sxe->addChild('event_buy_now', $_POST["event_buy_now"]);
        $sxe->addChild('event_phone_no', $_POST["event_phone_no"]);
        $sxe->addChild('switch_footer_widgets', $_POST["switch_footer_widgets"]);
        $sxe->addChild('event_start_time', $_POST["event_start_time"]);
        $sxe->addChild('event_end_time', $_POST["event_end_time"]);
        $sxe->addChild('event_all_day', $_POST["event_all_day"]);
        $sxe->addChild('event_ticket_options', $_POST["event_ticket_options"]);
        $sxe->addChild('event_address', $_POST["event_address"]);
        $sxe->addChild('event_map', $_POST["event_map"]);
    echo "<pre>BPOST: ".print_r($_POST, true)."</pre>";
    print_r($sxe);
    $sxe = save_layout_xml($sxe);
    print_r($sxe);
    update_post_meta($post_id, 'cs_event_meta', $sxe->asXML());
}

此外,以下是events.php文件中XML方面的更多代码:

// event custom fields start
add_action( 'add_meta_boxes', 'cs_event_meta' );  
function cs_event_meta()
{
    add_meta_box( 'event_meta', 'Event Options', 'cs_event_meta_data', 'events', 'normal', 'high' );
}
function cs_event_meta_data($post) {
    $cs_event_meta = get_post_meta($post->ID, "cs_event_meta", true);
    global $cs_xmlObject;
    if ( $cs_event_meta <> "" ) {
        $cs_xmlObject = new SimpleXMLElement($cs_event_meta);
            $event_ticket_price = $cs_xmlObject->event_ticket_price;
            $event_social_sharing = $cs_xmlObject->event_social_sharing;
            $event_start_time = $cs_xmlObject->event_start_time;
            $event_end_time = $cs_xmlObject->event_end_time;
            $event_all_day = $cs_xmlObject->event_all_day;
            $event_address = $cs_xmlObject->event_address;
            $event_loc_lat = $cs_xmlObject->event_loc_lat;
            $event_loc_long = $cs_xmlObject->event_loc_long;
            $event_loc_zoom = $cs_xmlObject->event_loc_zoom;
            $testVar = $cs_xmlObject->event_buy_now;
            if (strstr($cs_xmlObject->event_buy_now, "&amp;"))
            {
                echo "yes"; //$event_buy_now = ($cs_xmlObject->event_buy_now . 'FINDME(yes)');
                print_r ($testVar);
            }
            else
            {
                echo "no"; //$event_buy_now = ($cs_xmlObject->event_buy_now . 'FINDME(no)');
                print_r ($testVar);
                print_r ($cs_xmlObject);
            }
            $event_ticket_options = $cs_xmlObject->event_ticket_options;
            $event_map = $cs_xmlObject->event_map;
    }
    else {
        $event_ticket_price = '';
        $slider_id = '';
        $event_social_sharing = '';
        $event_related = '';
        $event_start_time = '';
        $event_end_time = '';
        $event_all_day = '';
        $event_address = '';
        $event_loc_lat = '';
        $event_loc_long = '';
        $event_loc_zoom = '';
        $inside_event_related_post_title = '';
        $event_map = '';
        $event_buy_now = '';
        $event_ticket_options = '';
    }
注意:这两个代码片段都位于父主题的/include/目录中。此时,还没有子主题——如果有必要,将创建子主题来实现这些更新。

只需使用jQuery和.change()来检测输入中的新内容。当磁场发生变化时,让它改变&和;amp;这可能是一种肮脏的手段,但如果这是你和发薪日之间的障碍,那就放手吧。