Intereting Posts
in_category () и tax_query с пользовательским типом сообщения открыть выбранный пост WordPress с помощью javascript Блокировщик панели мониторинга для многопользовательской сети для определенных пользовательских ролей Как подсчитать количество терминов в таксономии Пользовательская медиа-галерея Почему is_page не работает, когда я помещаю его в файл functions.php? Перехват wp_footer дважды Отображать пользователей, загруженных в качестве сообщений Как создать ссылку для установки плагина? Могу ли я предотвратить «wp_user_level» от добавления в wp_usermeta при регистрации? Как установить черновик страницы как родителя без публикации? Как устранить проблемы с IP-адресом после миграции сервера Публикация сообщения при редактировании формы сообщения с нажатием клавиши ввода / возврата на клавиатуре Должен ли я беспокоиться о внедрении SQL при использовании wp_insert_post? как узнать, имеет ли страница разбиение на страницы (<! – nextpage ->) или нет

Создание коротких кодов по таксономии

Проверьте этот код:

function slide_group() { register_taxonomy('Group', 'slides', array( 'hierarchical' => true /*visualizza come le categorie*/, 'label' => 'Group', 'query_var' => true, 'rewrite' => true));} add_action('init', 'slide_group', 0); function square_slider_template() { // Query Arguments $args = array( 'post_type' => 'slides', 'posts_per_page' => 5 ); // The Query $the_query = new WP_Query( $args ); // Check if the Query returns any posts if ( $the_query->have_posts() ) { // Start the Slider ?> <div class="flexslider"> <ul class="slides"> <?php // The Loop while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <li> <?php // Check if there's a Slide URL given and if so let's a link to it if ( get_post_meta( get_the_id(), 'square_slideurl', true) != '' ) { ?> <a href="<?php echo esc_url( get_post_meta( get_the_id(), 'square_slideurl', true ) ); ?>"> <?php } // The Slide's Image echo the_post_thumbnail(); // Close off the Slide's Link if there is one if ( get_post_meta( get_the_id(), 'square_slideurl', true) != '' ) { ?> </a> <?php } ?> </li> <?php endwhile; ?> </ul><!-- .slides --> </div><!-- .flexslider --> <?php } // Reset Post Data wp_reset_postdata(); } // Slider Shortcode function square_slider_shortcode() { ob_start(); square_slider_template(); $slider = ob_get_clean(); return $slider; } add_shortcode( 'slider', 'square_slider_shortcode' ); 

Этот код создает слайдер на основе пользовательского типа «слайдер», используя миниатюру. Я также создал обычную таксономию.
То, что я сделал бы, это создать цикл «foreach», основанный на таксономическом термине, который создает короткий код с названием таксономии ([дизайн], [разработка] и т. Д. ИЛИ [ползунок = дизайн], [ползунок = develop]), которые содержат только должности taxonomy_term.
Например, [дизайн] содержит / отображает только сообщение с таксономией проекта, [develop] содержит / отображает только сообщение с развитием таксономии и т. Д.

EDIT / UPDATE # 2

Я на этом шаге:

  function square_slider_shortcode( $atts = array(), $content = '' ) { $atts = shortcode_atts( array( 'type' => '00', // default type ), $atts, 'square_slider' ); // Sanitize input: $pid = sanitize_title( $atts['type'] ); // Output return square_slider_template( $pid ); } add_shortcode( 'slider', 'square_slider_shortcode' ); function square_slider_template( $pid = '' ) { $args = array( 'post_type' => 'slides', 'p' => $pid, ); ?> <?php // The Query $query = new WP_Query( $args ); // Check if the Query returns any posts if ( $query->have_posts() ) { // Start the Slider ?> <div class="flexslider"> <ul class="slides"> <?php // The Loop while ( $query->have_posts() ) : $query->the_post(); for ($i = 1; $i <= 10; $i++): $num_slide="slide_" . $i; $slide = get_field($num_slide); ?> <?php if (!empty($slide)): ?><li><img src="<?php echo $slide; ?>"></li> <?php endif; ?> <?php endfor; ?> <?php endwhile; ?> </ul><!-- .slides --> </div><!-- .flexslider --> <?php } // Reset Post Data wp_reset_postdata(); } 

Я решил таким образом создать петлю со слайдами, и я создам слайдер. Это не разумный способ или правильный способ, но он работает 🙂
UPDATE: все работает, но слайдер появляется всегда в верхней части страницы, независимо от положения внутри редактора.
Я попытался поместить его в другой [one_third][slider type="98"][/one_third][one_third_last]casual words[/one_third_last] например [one_third][slider type="98"][/one_third][one_third_last]casual words[/one_third_last] но он появляется за пределами тега div, как вы можете видеть на изображении введите описание изображения здесь

Solutions Collecting From Web of "Создание коротких кодов по таксономии"

Вы хотите определить потенциально огромное количество разных коротких кодов с одним и тем же обратным вызовом короткого кода?

Почему бы вам не определить один короткий код с атрибутом term? Например

 [sc term="london"] 

пс:

Я думаю, что ваша проблема заключается в части $tax_term->name , которая может быть такой же строкой, как City of London, и это не допустимое имя $tax_term->name . $tax_term->slug этого попробуйте $tax_term->slug , но я не думаю, что это хорошая стратегия!

Другая проблема заключается в том, что вы определяете функцию внутри цикла foreach. Это должно дать вам такую ​​ошибку, как: Fatal error: Cannot redeclare examples_shortcode() ...

Вы должны использовать WP_DEBUG в своем WP_DEBUG . Вот хорошая отправная точка.

Обновить:

Вы можете использовать, например:

 function square_slider_shortcode( $atts = array(), $content = '' ) { $atts = shortcode_atts( array( 'type' => 'sport', // default type 'nr' => 5, // default number of slides ), $atts, 'square_slider' ); // Sanitize input: $type = sanitize_title( $atts['type'] ); $nr = (int) $atts['nr']; // Output return square_slider_template( $type, $nr ); } add_shortcode( 'slider', 'square_slider_shortcode' ); 

где:

 function square_slider_template( $type = '', $nr = 5 ) { // Query Arguments $args = array( 'post_type' => 'slides', 'posts_per_page' => $nr, 'tax_query' => array( array( 'taxonomy' => 'slides', 'field' => 'slug', 'terms' => $type, ), ), ); // The Query $the_query = new WP_Query( $args ); // ... etc ... return $html; } 

Тогда ваш синтаксис короткого кода будет выглядеть следующим образом:

 [slider type="sport" nr="5"] 

где теперь вы можете изменить термин ( type ) и количество слайдов ( nr ) в соответствии с вашими потребностями.

Кажется, вам нужен короткий код закрытия.
http://codex.wordpress.org/Shortcode_API будет отличным чтением, чтобы начать.