1 Вопрос: Почему ссылка «Узнать больше» не ссылается на страницу?

вопрос создан в Thu, May 2, 2019 12:00 AM

Я пытаюсь понять, как написан этот код (от другого разработчика). В ней есть ошибка, но я не могу ее исправить. Ссылка «Узнать больше» не ссылается на сообщение в настраиваемом поле.

Я попытался удалить дополнительные строки, но затем он изменяет ссылку на слайд для ссылки на само изображение, а не на то, что присутствует в поле пользовательской ссылки.

$slides = ONS_Slide_Custom_Post_Type::find_all('DESC');
if (isset($slides) && count($slides > 0)) {
    $items = array();
    foreach ($slides as $slide) {
        //echo '<tt><pre>' . var_export($slide, true) . '</pre></tt>';
        $item = new stdClass();
        if (isset($slide->custom_data) && count($slide->custom_data) > 0) {
            if (isset($slide->custom_data['ons_slide_image'])) {
                $item->src = $slide->custom_data['ons_slide_image'];
            }
            if (isset($slide->custom_data['ons_slide_heading'])) {
                $item->heading = $slide->custom_data['ons_slide_heading'];
                $item->heading .= '<span class="punctuation">.</span><span class="learn_more">&nbsp;&raquo;</span>';
            }
            if (isset($slide->custom_data['ons_slide_caption'])) {
                $item->caption = $slide->custom_data['ons_slide_caption'];
                $item->caption .= '&nbsp;<a href="#" class="learn_more">Learn more &raquo;</a>';

            }
            if (isset($slide->custom_data['ons_slide_href'])) {
                $item->href = $slide->custom_data['ons_slide_href'];

            } else {
                $item->href = "#";
            }
        }
        $items[] = $item;
    }
    $carousel = new ONS_Bootstrap_Carousel($items);
    echo $carousel;
}
    
1
  1. Это потому, что <a href="#"> изменится на <a href="ARTICLE URL">
    2019-05-02 15: 00: 21Z
  2. что «ARTICLE URL» должен динамически заполняться полем custom_data 'ons_slide_href'
    2019-05-02 15: 02: 59Z
  3. Правильно, тогда сделайте это
    2019-05-02 15: 04: 18Z
  4. Кажется, эта строка $item->href = $slide->custom_data['ons_slide_href']; должна вставлять URL-адрес в слайд. Найдите код, который заполняет этот массив, узнайте, как он работает, и исправьте все, что нужно исправить, чтобы он делал то, что должен.
    2019-05-02 15: 05: 56Z
  5. @ cabrerahector Я обновил запись, добавив найденный класс в отдельный файл. Код, который я прикрепил, является полным кодом для этого вновь найденного файла. Вы видите здесь что-нибудь, что может вызывать проблемы?
    2019-05-02 15: 18: 32Z
1 ответ                              1                         

Вы уже что-то делаете с $slide->custom_data['ons_slide_href'];, но ПОСЛЕ строк кода, которые выводят ваш тег привязки.

Так что попробуйте переключить обработку примерно так

$slides = ONS_Slide_Custom_Post_Type::find_all('DESC');
if (isset($slides) && count($slides > 0)) {
    $items = array();
    foreach ($slides as $slide) {
        //echo '<tt><pre>' . var_export($slide, true) . '</pre></tt>';
        $item = new stdClass();
        if (isset($slide->custom_data) && count($slide->custom_data) > 0) {
            if (isset($slide->custom_data['ons_slide_image'])) {
                $item->src = $slide->custom_data['ons_slide_image'];
            }
            if (isset($slide->custom_data['ons_slide_heading'])) {
                $item->heading = $slide->custom_data['ons_slide_heading'];
                $item->heading .= '<span class="punctuation">.</span><span class="learn_more">&nbsp;&raquo;</span>';
            }

        // moved this code above the anchor tag line
            if (isset($slide->custom_data['ons_slide_href'])) {
                $item->href = $slide->custom_data['ons_slide_href'];
            } else {
                $item->href = "#";
            }

        // Now concatenate $item->href in the anchor tag line
            if (isset($slide->custom_data['ons_slide_caption'])) {
                $item->caption = $slide->custom_data['ons_slide_caption'];
                $item->caption .= '&nbsp;<a href="' . $item->href . '" class="learn_more">Learn more &raquo;</a>';

            }
        }

        $items[] = $item;
    }
    $carousel = new ONS_Bootstrap_Carousel($items);
    echo $carousel;
}
    
0
2019-05-02 15: 17: 09Z
  1. Бриллиант. Это работает как шарм. @RiggsFolly, не могли бы вы объяснить, почему за этот пост проголосовали? Извините, я новичок в публикации, но я хотел бы внести свой вклад в сообщество. Может быть, я просто еще не знаю этикета?
    2019-05-02 15: 34: 20Z
  2. Привет, вероятно, потому, что он выглядит в значительной степени как TYPO, т. е. код был там, но в неправильном порядке, и простое глазное яблоко заметило, что в # атрибут href. Но вы никогда не можете быть полностью уверены, некоторые люди DV без каких-либо объяснений
    2019-05-02 15: 52: 36Z
  3. Но хорошие новости Некоторые люди UpVote также без видимой причины:)
    2019-05-02 15: 53: 14Z
источник размещен Вот