• Всем доброго времени суток.
    Проблема заключается в следующем:
    Пытаюсь вставить код карты яндекса в запись и при обновлении записи выскакивает ошибка 403 «You don’t have permission to access this document». Благодаря некоторым манипуляциям я понял, что проблема с

    <script type=...</script>

    ибо когда этот код вставляешь выскакивает эта ошибка, облазил много форумов и сайтов, но нигде стоящего ответа не нашлось.
    Надеюсь на вашу помощь.
    Предварительное спасибо за ответ.

Просмотр 15 ответов — с 1 по 15 (всего 23)
  • а сам вставляемый код тут в тешах 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>&nbsp;<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 не те?
    добавьте туда тупо пробел где-нибудь и попробуйте сохранить.

    добавьте туда тупо пробел где-нибудь и попробуйте сохранить.

    Пробовал, все сохраняется.

    тогда не знаю.
    код то рабочий — проверен на своем сайте.

Просмотр 15 ответов — с 1 по 15 (всего 23)

Тема «Javascript в записи» закрыта для новых ответов.