WordPress как на ладони
wordpress jino

the_permalink() WP 1.2.0

Выводит ссылку (УРЛ) на пост, который в текущий момент обрабатывается в Цикле.

Этот Тег шаблона нужно использовать внутри Цикла WordPress.

Этот тег шаблона не принимает никаких параметров и выводит УРЛ только на текущий пост в цикле.

Работает на основе: get_permalink()
✈ 1 раз = 0.002275с = очень медленно | 50000 раз = 5.62с = быстро PHP 7.1.2, WP 4.7.3
Хуки из функции:

Использование

<?php the_permalink( $post ); ?>
$post(число/объект)
ID или объект записи (поста), ссылку на который нужно получить. С версии WP 4.4.
По умолчанию: ID текущего поста в цикле

Примеры

#1. Выведем ссылку на пост в виде простого текста, а не html ссылки

Адрес этого поста: <?php the_permalink(); ?>

#2. Выведем html ссылку на текущий пост

Текстом ссылки будет: "постоянная ссылка":

<a href="<?php the_permalink(); ?>">постоянная ссылка</a>

#3. Выведем ссылку на текущий пост

Текстом ссылки будет заголовок поста.

Это стандартный способ вывода ссылки на пост внутри Цикла:

<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>

Код the permalink: wp-includes/link-template.php WP 4.9

<?php
function the_permalink( $post = 0 ) {
	/**
	 * Filters the display of the permalink for the current post.
	 *
	 * @since 1.5.0
	 * @since 4.4.0 Added the `$post` parameter.
	 *
	 * @param string      $permalink The permalink for the current post.
	 * @param int|WP_Post $post      Post ID, WP_Post object, or 0. Default 0.
	 */
	echo esc_url( apply_filters( 'the_permalink', get_permalink( $post ), $post ) );
}

Cвязанные функции

Из метки: permalink (постоянные ссылки ЧПУ)

Еще из метки: loop (Цикл WP)

Еще из раздела: Записи: посты, страницы, ...

the_permalink 24 комментария
Полезные 1 Вопросы 2 Все
  • Игорь cайт: top-fotograf.ru
    <?php  
    global $post;  
    $args = array( 'posts_per_page' => 5, 'post_type'=> 'attachment' );  
    $myposts = get_posts( $args );  
    foreach( $myposts as $post ) :  setup_postdata($post); ?>  
    <div class="item"><a href="<?php the_permalink(); ?>"><?php echo wp_get_attachment_image( $post->ID, array(480,320), true); ?></a></div>
    <?php endforeach; ?>

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

    пробовал делать так:

    <?php the_permalink($post->ID); ?>

    не работает(

    Ответить6 лет назад #
    • Kama4660
      the_permalink($post->post_parent);
      Ответить6 лет назад #
      • Игорь cайт: top-fotograf.ru

        Чето тоже самое получается:
        адрес_сайта/слаг_страницы/название_аттачмента

        Ответить6 лет назад #
        • Kama4660

          Тьфу млин, т.е. так:

          <?php echo get_permalink($post->post_parent); ?>
          1
          Ответить6 лет назад #
          • Игорь cайт: top-fotograf.ru

            Теперь работает как надо, спасибо огромное!

            Ответить6 лет назад #
          • Zraz

            Спасибо тебе добрый человек, помог -)

            Ответить4.8 года назад #
  • Антон

    Здравствуйте!

    Подскажите, пожалуйста! Как сделать вывод ссылок без www и названия сайта при помощи этой или другой функции? Чтобы ссылки выводились как внутренние. Например, было http://www.site.ru/news а стало /news

    Заранее большое спасибо!

    1
    Ответить2.9 года назад #
    • Kama4660

      Прогоните ссылку через эту функцию wp_make_link_relative():

      $link = 'http://www.site.ru/news';
      $link = wp_make_link_relative( $link );
      echo $link;
      
      // выведет: /news
      Ответить2.9 года назад #
      • Антон

        Спасибо за ответ! Но мне нужно, чтобы это работало в следующем случае:

        <?php
        $posts_new = get_posts('category=30&numberposts=100&orderby=title&order=ASC');
        foreach ($posts_new as $post_new) :
        	echo '<li><a href="'; 
        	echo get_permalink($post_new->ID);
        	echo '">';
        	echo 'ЖК ';
        	echo $post_new->post_title;
        	echo '</a></li>
        ';
        endforeach;    
        ?>

        Ну и при простом выводе постов внутри цикла. Kama, помогите, пожалуйста!

        Ответить2.9 года назад #
        • Kama4660

          Замените get_permalink($post_new->ID);
          на
          wp_make_link_relative( get_permalink($post_new->ID) );

          Мне интересно, зачем вам нужны относительные УРЛ, какую цель преследуете?

          Ответить2.9 года назад #
          • Антон

            Kama, спасибо Вам огромное! Получилось!
            Мне это нужно для SEO. Так называемые относительные УРЛ на сайте вроде бы считаются более полезными. Это понимание ко мне пришло из результатов анализа моего сайта на сайте xtool.ru

            Если на главной странице много ссылок с http://www.site.ru, то в результате анализа в графе "Заспамленность ссылками" будет большой процент "заспамленности". При том, что все эти ссылки ведут внутрь текущего же сайта.

            Например, на моём сайте стало более 250 таких ссылок и в анализе появилось 4 красных кружка из пяти в вышеупомянутой графе. И также в графе "Вероятность фильтра
            на исх. ссылки (beta):" появилась цифра 15%. Вот такая вот странность. И в связи с этим я решил устранить эту проблему.

            Kama, ещё раз огромное Вам спасибо за помощь! Ваш сайт мне очень помог изучить WordPress и создать крутой сайт!

            Ответить2.9 года назад #
          • Антон

            Kama, а подскажите ещё, пожалуйста, как это осуществить внутри стандартного цикла?

            Например:

            <?php if (have_posts()) : while (have_posts()) : the_post(); ?>       
            
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            
            <?php endwhile; endif; ?>
            Ответить2.9 года назад #
            • Kama4660
              <?php if (have_posts()) : while (have_posts()) : the_post(); ?>       
              
              <a href="<?php echo wp_make_link_relative( get_permalink() ); ? rel="nofollow">"><?php the_title(); ?></a>
              
              <?php endwhile; endif; ?>
              Ответить2.9 года назад #
  • Тимур

    Здравствуйте. Подскажите пожалуйста! Этот код выводит дату поста в виде ссылки. Как его правильно прописать, чтобы дата поста была просто текстом, а не ссылкой?

    echo '<a href="' . esc_url( get_permalink() ) . '" rel="nofollow">' . get_the_date() . '</a> - ';
    Ответить2.5 года назад #
  • FaSTeR

    Здравствуйте! Подскажите пожалуйста куда копать, всю голову уже сломал.
    Есть код

    <?php $posts = get_posts ("posts_per_page=30000&post_type=GPAGES&orderby=ratings_average&order=DESC"); ?>

    вывожу его

    <a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>

    Выводится ссылка такого вида: http://домен/?post_type=gpages&p=2836
    Она соответственно не открывается. Как сделать чтоб вывелась ссылка http://домен/gpages/slug_страницы

    ЧПУ включены, другие страницы выводятся нормально. Этот плагин выводит все как нужно, а если я делаю в том месте где мне нужно этот код - получаются такие ссылки (

    Спасибо за ваш чудесный сайт!

    • Kama4660

      А у вас эти записи опубликованы, открыты для публичного просмотра? Такие ссылки обычно для закрытых записей только... Может тип записи не public? Копайте в эту сторону...

  • Анна @

    Привет, благодаря твоему сайту, о счастье, смогла переделать под себя бесплатный шаблон. Родные виджеты убрала, чем-то они меня не устроили, поставила relap.
    Осталась такая проблема: нужно чтобы в анонсах выводились только посты, а сейчас выводит и какие-то архивы и страницы, которых уже может и не быть. Подскажи направление, куда идти и что искать, пожалуйста. Буду очень признательна.

  • Пытаюсь вывести permalink() не совсем стандартно, но не срабатывает:

    <?php
    if (get_post_meta($post->ID, 'meta_key', 1) != "")  { echo '<td>'.'<a href='.the_permalink().' >'.the_title().'</a>'.'</td>'; }
    ?>

    Title выводится, но без ссылки.
    Подскажите пожалуйста, возможно ли вообще вывести permalink в такой записи?

    • Kama4660

      the_permalink() и the_title() сразу выводят на экран - там не подходят... ты же строку собираешь и потом сам вывдишь через echo...

      Юзай get_permalink() и get_the_title()

  • Александр @

    Здавствуйте! Помогите разобраться. При клике по заголовку записи - открывается главная страница, где у меня не должно быть контента(собственно там и кода то выводящего нету). Чтоб запись показывалась одна и целиком нужен еще какой-то шаблон? Не знаю понадобится ли код, но на всякий случай выложу.

    <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
    <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
    <small class="postmetadata"><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>
    <div class="entry"><?php the_excerpt('Read the rest of this entry »'); ?></div>
    <p class="postmetadata">
     <?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in 
     <?php the_category(', ') ?> | 
     <?php edit_post_link('Edit', '', ' | '); ?>  
     <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?>
    </p>
    </div>

Здравствуйте, !

Ваш комментарий