get_the_ID() — возвращает ID текущего поста

Функция возвращает ID (целое число) текущего поста в цикле. При использовании вне цикла, возвращать ничего не будет.

Тут, я надеюсь, вы имеете правильное представление о цикле, то есть например на страницах самих постов функция тоже будет работать норм.

get_the_ID()

Сама функция без параметров.

Примеры

$post_id = get_the_ID(); // записываем ID поста в переменную для дальнейшего использования

Использование get_the_ID() в качестве значения аргументов других функций:

echo get_post_meta( get_the_ID(), 'some_key', true);

Объединяем два предыдущих примера и получаем:

$post_id = get_the_ID();
echo get_post_meta( $post_id, 'some_key', true);

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 11

  • Kenny 13 октября 2015 #

    Как получить id поста при запросе ajax:

    function comment(){
     
    	   $postid = get_the_id();
     
    $query = new WP_Query( array( 'posts_per_page' => 1,'p' =>  $postid) );
    while ( $query->have_posts() ) {
    	$query->the_post();
     
    	$idd = get_the_id(); // выведем заголовок поста
    }
     
    echo $idd;
    wp_reset_postdata();
     
    }
     
    add_action('wp_ajax_mycomm', 'comm');
    add_action('wp_ajax_nopriv_mycomm', 'comm');

    если поместить функцию в код, то id выводит, но если запросить функцию через ajax - выводит id последнего поста

    $('.seecomment').click(function(){
    	var data =  'action=mycomm';
     	$.ajax({
     		type: 'GET',
     		url: ajaxurl,
     		dataType: 'html',
     		beforeSend: (function(){				
    					$('.comment').html('Загрузка..');
    			}),
     		data: data,	
     		success: function(data){ 		 
     			$('.comment_template').html(data);
     		}
     	})
     });
    • Миша 14 октября 2015 #
      var data =  'action=mycomm&post_id=<?php the_id() ?>';
      • Kenny 15 октября 2015 #

        Спасибо, работает вот так:

        <script>
        	var send_post_id = <?php the_ID(); ?>;
        </script>

        разместить в single.php или page.php.

        А в скрипте указать:

        data: ({
        	action: 'mycomm',	
        	pid: send_post_id 
        }),

        И в functions.php

        	$p_id = ( $_POST['sid'] );

        ...

        При написании такой

        var data =  'action=mycomm&post_id=<?php the_id() ?>';

        конструкции выдает вот это:

        admin-ajax.php?action=action%3Dmycomm%26post_id%3D%3C%3Fphp+the_id()+%3F%3E

        может я где-то не верно понимаю..))

        • Миша 16 октября 2015 #

          $p_id = ( $_POST['sid'] );

          Опечатка или у вас в коде так?

          • Kenny 17 октября 2015 #

            да, опечатка

        • Миша 17 октября 2015 #

          А, ну у вас код в js файле просто. Тогда да.

          Первые три ваших листинга правильные, не считая опечатки.

          • Kenny 19 октября 2015 #

            Подскажите, почему не подгружаются плагины прикручены к комментариям ?

            • Миша 19 октября 2015 #

              Какие конкретно?

              • Kenny 19 октября 2015 #

                Все, я для наглядности прикрутил предпросмотр и кнопки для кода

              • Kenny 19 октября 2015 #

                http://yara.esy.es/

          • Kenny 19 октября 2015 #

            и еще js не инициализировался, но это я решил, плагин все еще не работает 🙁

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.