{"id":97,"date":"2025-12-29T10:14:18","date_gmt":"2025-12-29T10:14:18","guid":{"rendered":"https:\/\/zhoupan-shop.appleinc.cn\/?post_type=product&#038;p=97"},"modified":"2026-05-30T10:16:41","modified_gmt":"2026-05-30T10:16:41","slug":"portable-clothesline%e4%be%bf%e6%90%ba%e5%bc%8f%e6%99%be%e8%a1%a3%e7%bb%b3","status":"publish","type":"product","link":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/product\/portable-clothesline%e4%be%bf%e6%90%ba%e5%bc%8f%e6%99%be%e8%a1%a3%e7%bb%b3\/","title":{"rendered":"Portable clothesline(\u4fbf\u643a\u5f0f\u667e\u8863\u7ef3)"},"content":{"rendered":"<p>Features:<br \/>\n1. ABS box + polyester rope material: This travel clothes lines are made of polyester rope, get tight and less stretch, support wet heavy laundry, washed cloth, bathing suit, washcloths, handwashing items. Use for indoor and outdoor drying, handy for things.<br \/>\n2. Design: Small traveling clothesline comes in pocket-size, packed in zip bag. This laundry cord set take up little room and light weight for backpack, suitcase, bag, convenient for carry-on trip.<br \/>\n3. Multi-Purpose: Working well in camping, hiking, outdoor activity. Also do it on a backpacking travel, cruise, RV, beach, hotel trip, indoor.<br \/>\nAttention:Due to the different computer display colors, the physical color may be slightly different from the above pictures, thank you for your understanding.<br \/>\nColor: As picture<br \/>\nMaterial: ABS box + polyester rope<br \/>\nSize: Please refer to option for size detail.<br \/>\nPlease allow 0.5-1 inch error due to manual measurement.<br \/>\nPackage include: Portable Travel Clothesline Cord * 1pc<\/p>\n<div class='wpecpp-container wpecpp-align-center'><form class='wpecpp-form wpecpp-form-disabled' id='rf22f7d9331e880fb0e785307af4a0560' action='#' method='post'>    \r\n    <!-- PayPal SDK Loader with DOM check -->\r\n    <script>\r\n    (function() {\r\n        var sdkId = 'wpecpp-paypal-sdk-b8ba1c962a20a95fbdfaf052b8c3d42c';\r\n        var sdkUrl = 'https:\/\/www.paypal.com\/sdk\/js?client-id=Advx1wc_4Se6ICsYnMXTqWntyS0F1VdRHIeWnT2Qgv0nFi6sD86KEM9DSxcG79rq_weHqfs1uClL1xDy&merchant-id=9X5RCTM5C6ZNL&currency=USD&intent=capture&components=buttons,funding-eligibility&enable-funding=card';\r\n        \r\n        \/\/ Check if SDK script already exists in DOM or is being loaded\r\n        if (!document.getElementById(sdkId)) {\r\n            var script = document.createElement('script');\r\n            script.id = sdkId;\r\n            script.src = sdkUrl;\r\n            script.setAttribute('data-partner-attribution-id', 'WPPlugin_STP_CP');\r\n                        document.head.appendChild(script);\r\n        }\r\n    })();\r\n    <\/script>\r\n    \r\n    <style>\r\n        .wpecpp-paypal-button-container > *,\r\n        .wpecpp-paypal-hosted-fields-container .wpecpp-paypal-btn {\r\n            max-width: 300px;\r\n        }\r\n        .wpecpp-paypal-hosted-fields-container .wpecpp-paypal-btn {\r\n            height: 40px;\r\n        }\r\n    <\/style>\r\n    \r\n    <script>\r\n        const wpecppPaypalFunding_rf22f7d9331e880fb0e785307af4a0560 = [\"paypal\",\"card\"];\r\n    <\/script>\r\n\r\n    <!-- Buttons container -->\r\n    <div id='wpecpp-paypal-button-container-rf22f7d9331e880fb0e785307af4a0560' class='wpecpp-paypal-button-container wpecpp-vertical'><\/div>\r\n\r\n\t\r\n    <div id='wpecpp-paypal-message-rf22f7d9331e880fb0e785307af4a0560' class='wpecpp-payment-message'><\/div>\r\n\r\n    <script>\r\n        (function() {\r\n            const message_rf22f7d9331e880fb0e785307af4a0560 = document.getElementById('wpecpp-paypal-message-rf22f7d9331e880fb0e785307af4a0560');\r\n            \r\n            \/\/ Wait for SDK to be fully loaded with polling\r\n            function initPayPalButton_rf22f7d9331e880fb0e785307af4a0560() {\r\n                \/\/ Check if PayPal SDK is fully loaded with all required methods\r\n                if ( typeof paypal === 'undefined' || \r\n                     typeof paypal.getFundingSources !== 'function' ||\r\n                     typeof paypal.Buttons !== 'function' ) {\r\n                    \/\/ SDK not loaded yet, wait and try again\r\n                    setTimeout(initPayPalButton_rf22f7d9331e880fb0e785307af4a0560, 100);\r\n                    return;\r\n                }\r\n\r\n        paypal.getFundingSources().forEach(function (fundingSource) {\r\n            if ( wpecppPaypalFunding_rf22f7d9331e880fb0e785307af4a0560.indexOf(fundingSource) > -1 ) {\r\n                const style = {\r\n                    shape: 'rect',\r\n                    label: 'paypal',\r\n                    height: 40                };\r\n\r\n                if ( fundingSource !== 'card' ) {\r\n                    let color = 'gold';\r\n                    if (fundingSource === 'venmo' && color === 'gold') {\r\n                        color = 'blue';\r\n                    } else if (['ideal', 'bancontact', 'giropay', 'eps', 'sofort', 'mybank', 'p24'].indexOf(fundingSource) > -1 && ['gold', 'blue'].indexOf(color) > -1) {\r\n                        color = 'default';\r\n                    }\r\n                    style.color = color;\r\n                }\r\n\r\n                const button = paypal.Buttons({\r\n                    fundingSource: fundingSource,\r\n                    style: style,\r\n                    createOrder: function() {\r\n                        message_rf22f7d9331e880fb0e785307af4a0560.innerHTML = '';\r\n\r\n                        const form = document.getElementById('rf22f7d9331e880fb0e785307af4a0560'),\r\n                            formData = new FormData(),\r\n                            nameInput = form.querySelector('[name=\"item_name\"]'),\r\n                            priceInput = form.querySelector('[name=\"amount\"]'),\r\n                            quantityInput = form.querySelector('[name=\"quantity\"]');\r\n\r\n                        formData.append('action', 'wpecpp-ppcp-order-create');\r\n                        formData.append('nonce', wpecpp.nonce);\r\n                        formData.append('name', nameInput ? nameInput.value : '');\r\n                        formData.append('price', priceInput ? priceInput.value : 0);\r\n                        if (quantityInput) {\r\n                            formData.append('quantity', quantityInput.value);\r\n                        }\r\n\r\n                        return fetch(wpecpp.ajaxUrl, {\r\n                            method: 'post',\r\n                            body: formData\r\n                        }).then(function(response) {\r\n                            return response.json();\r\n                        }).then(function(data) {\r\n                            let orderID = false;\r\n                            if (data.success && data.data.order_id) {\r\n                                orderID = data.data.order_id;\r\n                            } else {\r\n                                throw data.data && data.data.message ? data.data.message : 'An unknown error occurred while creating the order. Please reload the page and try again.';\r\n                            }\r\n                            return orderID;\r\n                        });\r\n                    },\r\n                    onApprove: function(data) {\r\n                        const formData = new FormData();\r\n\r\n                        formData.append('action', 'wpecpp-ppcp-order-finalize');\r\n                        formData.append('nonce', wpecpp.nonce);\r\n                        formData.append('order_id', data.orderID);\r\n\r\n                        return fetch(wpecpp.ajaxUrl, {\r\n                            method: 'post',\r\n                            body: formData\r\n                        }).then(function(response) {\r\n                            return response.json();\r\n                        }).then(function(data) {\r\n                            if (data.success) {\r\n                                if (wpecpp.return.length) {\r\n                                    window.location.href = wpecpp.return;\r\n                                } else {\r\n                                    message_rf22f7d9331e880fb0e785307af4a0560.innerHTML = '<span class=\"payment-success\">' + data.data.message + '<\/span>';\r\n                                }\r\n                            } else {\r\n                                throw data.data.message;\r\n                            }\r\n                        });\r\n                    },\r\n                    onCancel: function() {\r\n                        if (wpecpp.cancel.length) {\r\n                            window.location.href = wpecpp.cancel;\r\n                        } else {\r\n                            message_rf22f7d9331e880fb0e785307af4a0560.innerHTML = '<span class=\"payment-error\">The payment was cancelled.<\/span>';\r\n                        }\r\n                    },\r\n                    onError: function (error) {\r\n                        message_rf22f7d9331e880fb0e785307af4a0560.innerHTML = '<span class=\"payment-error\">' + (error ? error : '<strong>Site admin<\/strong>, an error was detected in the plugin settings.<\/br>Please check the PayPal connection and product settings (price, name, etc.)') + '<\/span>';\r\n                    }\r\n                });\r\n\r\n                if (button.isEligible()) {\r\n                    button.render('#wpecpp-paypal-button-container-rf22f7d9331e880fb0e785307af4a0560');\r\n                }\r\n            }\r\n        });\r\n\r\n                    } \/\/ End initPayPalButton function\r\n            \r\n            \/\/ Start initialization (will poll until SDK is ready)\r\n            initPayPalButton_rf22f7d9331e880fb0e785307af4a0560();\r\n        })(); \/\/ End IIFE\r\n    <\/script>\r\n    <input type='hidden' name='item_name' value='1\u00d7Portable clothesline(\u4fbf\u643a\u5f0f\u667e\u8863\u7ef3)' \/><input type='hidden' name='amount' value='10' \/><\/form><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Features: 1. ABS box + polyester rope material: This travel clothes lines are made of polyester rope, get tight and less stretch, support wet heavy laundry, washed cloth, bathing suit, washcloths, handwashing items. Use for indoor and outdoor drying, handy for things. 2. Design: Small traveling clothesline comes in pocket-size, packed in zip bag. This [&hellip;]<\/p>\n","protected":false},"featured_media":80,"comment_status":"open","ping_status":"closed","template":"","meta":[],"product_brand":[],"product_cat":[16],"product_tag":[],"class_list":["post-97","product","type-product","status-publish","has-post-thumbnail","product_cat-outdoor-products","first","instock","shipping-taxable","purchasable","product-type-simple"],"_links":{"self":[{"href":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/wp-json\/wp\/v2\/product\/97","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/wp-json\/wp\/v2\/comments?post=97"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/wp-json\/wp\/v2\/media\/80"}],"wp:attachment":[{"href":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/wp-json\/wp\/v2\/media?parent=97"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/wp-json\/wp\/v2\/product_brand?post=97"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/wp-json\/wp\/v2\/product_cat?post=97"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/zhoupan-shop.appleinc.cn\/index.php\/wp-json\/wp\/v2\/product_tag?post=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}