Задание: выводить содержание поста на сторонних сайтах с помощью скрипта с возможностью добавления своих значений, которые будут подменяться в тексте.
- создаем в админке пост и вставляем туда наш тестовый текст:
“The <strong>practice_name</strong> is participating in an exciting investigation of a new multi-wavelength light therapy for the evaluation of treatment for <strong>spec_goal</strong>. If you believe you may benefit from this therapy, please contact our practice to see if you are qualified. For more information, you may visit <a target="_blank" href="http://site.com/123.html">link</a>.”
переменные practice_name и spec_goal в дальнейшем мы будем подменять нашими значениями
- сохраняем пост и запоминаем его ID (можно увидеть в ссылке) - пример ID: 2795. далее идем в файл functions.php и пишем следующую функцию:
add_action( 'save_post', 'wpse41912_save_post' ); function wpse41912_save_post() { //echo "<script>alert('post saved or updated!');</script>"; global $post; $post_id = $post->ID; if($post_id == '2795'){ // Autosave, do nothing if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; // AJAX? Not used here if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) return; // Check user permissions if ( ! current_user_can( 'edit_post', $post_id ) ) return; // Return if it's a post revision if ( false !== wp_is_post_revision( $post_id ) ) return; $content = ''; // $content .= "<h3>".get_the_title($post_id)."</h3>"; // $content .= "<hr>"; $content .= get_post_field('post_content', $post_id); $res = array(); $res["result"] = $content; $cont = json_encode($res); $final = '// API callback insertReply( '.$cont.' ); '; file_put_contents('/home/site.com/public_html/data/test.json', $final); } }
с помощью этой функции мы сохраняем (при каждом сохранении или апдейте) содержимое нашего поста в json-файл
- далее создаем наш тестовый js-файл, который будет парсить json и выводить на сайте инфу. допустим это будет test.js
function gup( name, url ) { if (!url) url = location.href; name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( url ); return results == null ? null : results[1]; } var getScriptURL = document.getElementById("uvlrx_script").src; var practice_name = gup( 'practice_name', getScriptURL ); practice_name = decodeURI(practice_name); var spec_goal = gup( 'spec_goal', getScriptURL ); spec_goal = decodeURI(spec_goal); function insertReply(content) { var strIn = content["result"]; strIn = strIn.replace(/\bpractice_name\b/g,practice_name); strIn = strIn.replace(/\bspec_goal\b/g,spec_goal); document.getElementById('uvlrx_output').innerHTML = strIn; } // create script element var script = document.createElement('script'); // assing src with callback name script.src = 'http://site.com/data/test.json?callback=insertReply'; // insert script to document and load content document.body.appendChild(script);
- и в финале наш спец.код, который юзеры будут ставить у себя на сайтах:
<script id="uvlrx_script" src="http://site.com/data/test.js?practice_name=insert name here&spec_goal=insert specific investigational goal here"></script> <div id="uvlrx_output"></div>
внутри кода значения insert name here и insert specific investigational goal here меняем на свой текст 😉