Долго мучился с произвольными полями в WordPress и наконец нашёл решение.
Всем привет. Встала передо мной острая задача сделать вывод произвольных полей в отрывке записи, а именно мне нужно было вывести значение произвольного поля size в отрывок записи. Как известно WordPress режет все теги которые используются в произвольных записях и хотя этот вопрос решается плагином Advanced Excerpt, но вот сниппеты у вас всё равно в произвольных полях работать не будут, т.е. вот такой шорткод
echo (get_post_meta(get_the_ID(), 'size', true))
ни дает никакого результата.
Но если же мы меняем get_the_ID() на непосредственно ID записи то всё чудесным образом работает — ну хоть какой то результат, подумал я.
И тут мне пришла мысль не брать id текущей записи, а передавать его в качестве параметра через сниппет, в наш шорткод.
В результате родилась вот такая запись. Данный шорткод я прописал в плагин Сниппеты (не люблю портить оригинальные файлы темы, в частности function.php). Сделано конечно корявенько, но функции свои выполняет. Если у вас есть идеи как сделать без передачи ID записи, буду рад их увидеть.
add_shortcode( 'currentsize', 'size_' ); function size_( $atts ){ $atts = shortcode_atts( array( 'size_' => 'Индивидуально', ), $atts, 'currentsize' ); return get_post_meta($atts['size_'], 'size', 1); }
Вызывается в отрывке при помощи [currentsize size_=2681] и всё отлично работает. Если что — то 2681 это id записи. Вывод ещё одного поля fasad я реализовал вот так.
add_shortcode( 'currentfasad', 'fasad_' ); function fasad_( $atts ){ $atts = shortcode_atts( array( 'fasad_' => 'Индивидуально', ), $atts, 'currentfasad' ); return get_post_meta($atts['fasad_'], 'fasad', 1); }
Вызывается [currentfasad fasad_=2681]