Javascript в записи
-
Всем доброго времени суток.
Проблема заключается в следующем:
Пытаюсь вставить код карты яндекса в запись и при обновлении записи выскакивает ошибка 403 «You don’t have permission to access this document». Благодаря некоторым манипуляциям я понял, что проблема с<script type=...</script>ибо когда этот код вставляешь выскакивает эта ошибка, облазил много форумов и сайтов, но нигде стоящего ответа не нашлось.
Надеюсь на вашу помощь.
Предварительное спасибо за ответ.
-
а сам вставляемый код тут в тешах code приведите.
<script type="text/javascript" charset="utf-8" src="https://api-maps.yandex.ru/services/constructor/1.0/js/?sid=159fKOHBfvdmkcHeZdFjFvYc9hC9JTr1&width=600&height=450"></script>Пытаюсь вставить код карты яндекса в запись
В целях безопасности и целостности кода в запись нельзя вставлять яваскрипты и пр.
Используйте шорткоды.В целях безопасности и целостности кода в запись нельзя вставлять яваскрипты и пр.
Используйте шорткоды.Отлично.
Теперь вопрос в следующем , как в шорткоды добавить яндекс-карту?почему нельзя? можно.
на вкладке «Текст» — я попробовал, карта в записи выводится.
даже после переключения на визуальный редактор и обратно — именно данный скрипт все равно работает в записи.но по сути то да — скрипты надо вставлять либо плагинами, либо шорткодами. а то получится как при обновлении на 4.2.3 — все js-скрипты вдруг поломались.
Всем спасибо. Нашел решение с functions.php .
Для тех, кто будет искать решение данной проблемы, то решение такое:Самый простой способ добавить Яндекс карту на сайт WordPress — это воспользоваться возможностями шорткода. Для этого нужно в начало файла темы function.php записать вот такой код:
function yandexmaps1(){
$rty=’сюда вставляем код карты’;
return $rty;
}
add_shortcode( ‘map1’, ‘yandexmaps1’ );Как вы поняли, вам нужно сгенерировать код карты самостоятельно и вставить его вместо этого текста (сюда вставляем код карты). Это код PHP добавления шорткода в WordPress по этому кавычки » удалять нельзя.
Чтобы вывести такую карту в любом посте, странице или виджете достаточно вставить вот такой код [map1].почему нельзя? можно.
Скорее имелось ввиду «крайне не рекомендуется».
Во первых с тч безопасности, во вторых редакторы (tinymce или др) вполне могут поломать код.на вкладке «Текст» — я попробовал, карта в записи выводится.
Не каждый js-скрипт это перенесёт 🙂 И не при всех условиях. Тема или какой-то плагин могут «почистить» контент.
как в шорткоды добавить яндекс-карту?
Нужно взять любой шорткодный плагин, в котором можно создавать шорткоды и с поддержкой яваскрипта (хотя вряд ли какой не поддерживает вставку js). В нём создать шорткод который уже и вставить в запись.
Или же найти готовый плагин я-карт. По моему такие были.
Здравствуйте, снова.
Подниму тему.
Хочу вставить календарь, но ничего не получается, даже через functions.
Что делать? Код вот
Предварительное спасибо за ответ.и почему не выходит?
function calendar1(){ ?> <style> #calendar4 { width: 100%; font: monospace; line-height: 1.2em; font-size: 15px; text-align: center; } #calendar4 thead tr:last-child { font-size: small; font-weight: 700; color: rgb(103, 103, 103); } #calendar4 tbody td { color: rgb(44, 86, 122); } #calendar4 tbody td:nth-child(1) { font-size: small; color: rgba(103, 103, 103, .7); } #calendar4 tbody td:nth-child(n+7), #calendar4 .holiday { color: rgb(231, 140, 92); } #calendar4 tbody td.today { outline: 3px solid red; } </style> <table id="calendar4"> <thead> <tr><td><td colspan="4"><select> <option value="0">Январь</option> <option value="1">Февраль</option> <option value="2">Март</option> <option value="3">Апрель</option> <option value="4">Май</option> <option value="5">Июнь</option> <option value="6">Июль</option> <option value="7">Август</option> <option value="8">Сентябрь</option> <option value="9">Октябрь</option> <option value="10">Ноябрь</option> <option value="11">Декабрь</option> </select><td colspan="3"><input type="number" value="" min="0" max="9999" size="4"> <tr><td><td>Пн<td>Вт<td>Ср<td>Чт<td>Пт<td>Сб<td>Вс <tbody> </table> <script> function Calendar4(id, year, month) { Date.prototype.getWeek = function () { var target = new Date(this.valueOf()); var dayNr = (this.getDay() + 6) % 7; target.setDate(target.getDate() - dayNr + 3); var firstThursday = target.valueOf(); target.setMonth(0, 1); if (target.getDay() != 4) { target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7); } return 1 + Math.ceil((firstThursday - target) / 604800000); } var Dlast = new Date(year,parseFloat(month)+1,0).getDate(), D = new Date(year,month,Dlast), DNlast = D.getDay(), DNfirst = new Date(D.getFullYear(),D.getMonth(),1).getDay(), m = document.querySelector('#'+id+' option[value="' + D.getMonth() + '"]'), g = document.querySelector('#'+id+' input'); if (new Date(D.getFullYear(),D.getMonth(),1).getWeek() < 10) { calendar = '<tr><td>0' + new Date(D.getFullYear(),D.getMonth(),1).getWeek(); }else{ calendar = '<tr><td>' + new Date(D.getFullYear(),D.getMonth(),1).getWeek(); } if (DNfirst != 0) { for(var i = 1; i < DNfirst; i++) calendar += '<td>'; }else{ for(var i = 0; i < 6; i++) calendar += '<td>'; } for(var i = 1; i <= Dlast; i++) { if (i == new Date().getDate() && D.getFullYear() == new Date().getFullYear() && D.getMonth() == new Date().getMonth()) { calendar += '<td class="today">' + i; }else{ if ( (i == 1 && D.getMonth() == 0 && ((D.getFullYear() > 1897 && D.getFullYear() < 1930) || D.getFullYear() > 1947)) || (i == 2 && D.getMonth() == 0 && D.getFullYear() > 1992) || ((i == 3 || i == 4 || i == 5 || i == 6 || i == 8) && D.getMonth() == 0 && D.getFullYear() > 2004) || (i == 7 && D.getMonth() == 0 && D.getFullYear() > 1990) || (i == 23 && D.getMonth() == 1 && D.getFullYear() > 2001) || (i == 8 && D.getMonth() == 2 && D.getFullYear() > 1965) || (i == 1 && D.getMonth() == 4 && D.getFullYear() > 1917) || (i == 9 && D.getMonth() == 4 && D.getFullYear() > 1964) || (i == 12 && D.getMonth() == 5 && D.getFullYear() > 1990) || (i == 7 && D.getMonth() == 10 && (D.getFullYear() > 1926 && D.getFullYear() < 2005)) || (i == 8 && D.getMonth() == 10 && (D.getFullYear() > 1926 && D.getFullYear() < 1992)) || (i == 4 && D.getMonth() == 10 && D.getFullYear() > 2004) ) { calendar += '<td class="holiday">' + i; }else{ calendar += '<td>' + i; } } if (new Date(D.getFullYear(),D.getMonth(),i).getDay() == 0 && i != Dlast) { if (new Date(D.getFullYear(),D.getMonth(),i).getWeek() < 9) { calendar += '<tr><td>0' + new Date(D.getFullYear(),D.getMonth(),i+1).getWeek(); }else{ calendar += '<tr><td>' + new Date(D.getFullYear(),D.getMonth(),i+1).getWeek(); } } } if (DNlast != 0) { for(var i = DNlast; i < 7; i++) calendar += '<td>'; } document.querySelector('#'+id+' tbody').innerHTML = calendar; g.value = D.getFullYear(); m.selected = true; if (document.querySelectorAll('#'+id+' tbody tr').length < 6) { document.querySelector('#'+id+' tbody').innerHTML += '<tr><td> <td><td><td><td><td><td><td>'; } document.querySelector('#'+id+' option[value="' + new Date().getMonth() + '"]').style.color = 'rgb(220, 0, 0)'; } Calendar4("calendar4",new Date().getFullYear(),new Date().getMonth()); document.querySelector('#calendar4').onchange = function Kalendar4() { Calendar4("calendar4",document.querySelector('#calendar4 input').value,document.querySelector('#calendar4 select').options[document.querySelector('#calendar4 select').selectedIndex].value); } </script> <?php } add_shortcode( 'cal1', 'calendar1' );шорткод [cal1]
Пишет, что нет доступа.
Скринк какому документу нет доступа? при открытии чего именно?
к какому документу нет доступа? при открытии чего именно?
При сохранение functions.php с данным кодом .
может права на functions.php не те?
добавьте туда тупо пробел где-нибудь и попробуйте сохранить.добавьте туда тупо пробел где-нибудь и попробуйте сохранить.
Пробовал, все сохраняется.
тогда не знаю.
код то рабочий — проверен на своем сайте.
Тема «Javascript в записи» закрыта для новых ответов.