Intereting Posts

Штрих-код функции – Установить параметр

function get_gifts_posts($params, $content){ $default_params = array( 'post_type' => 'post', 'order' => 'desc', 'orderby' => 'date', 'posts_per_page'=> 5, ); if (isset($params['type']) && !empty($params['type']) && post_type_exists($params['type'])) $params['post_type'] = $params['type']; if (isset($params['taxonomy']) && !empty($params['taxonomy']) && taxonomy_exists($params['taxonomy']) && isset($params['slug']) && !empty($params['slug'])) $params[$params['taxonomy']] = $params['slug']; foreach(array('type', 'slug', 'taxonomy') as $key) if (isset($params[$key])) unset($params[$key]); $params = wp_parse_args($params, $default_params); $transient_hash = 'get_gifts_posts_'.substr(md5(serialize($params)),0,10); if (false === ($html = get_transient($transient_hash))){ add_filter('query', 'q'); global $request_sql; // init $html = ''; $rp = new WP_Query($params); // $html .= '<h2>START</h2>'; // $html .= '<pre>'.var_export($params, 1).'</pre>'; // $html .= $request_sql.'<hr>'; if ($rp->have_posts()){ $html .= '<ul>'; while ( $rp->have_posts() ) { $rp->the_post(); $html .= "<li>"; if (($thumb_id = get_post_thumbnail_id())){ $thumb = wp_get_attachment_image_src($thumb_id, 'panel-small', false); $html .= "<a href=".get_permalink()."><div id=\"calimgf\" style=\"background:url({$thumb['0']}) no-repeat left top;\">"; } $html .= "<span class=\"calendate\" >".get_field('fl_price_ex')."</span>"; $html .= "<span class=\"calenhead\" >".get_field('fl_title')."</span>"; $html .= "</div></a></li>"; } $html .= '</ul>'; } if (!empty($html)) set_transient($transient_hash, $html, 60); } return $html; } 

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

Сейчас я показываю 5 сообщений по умолчанию 'posts_per_page'=> 5,

Если пользователь не указывает количество сообщений, то функция должна по-прежнему показывать по 5 сообщений по умолчанию.

Solutions Collecting From Web of "Штрих-код функции – Установить параметр"

В Codex есть пример базового короткого кода .

 function bartag_func( $atts ) { extract( shortcode_atts( array( 'foo' => 'no foo', 'baz' => 'default baz' ), $atts ) ); return "foo = {$foo}"; } add_shortcode( 'bartag', 'bartag_func' ); 

Массив – это значения по умолчанию для shortcode и используется для заполнения любого атрибута, который не определен в параметрах короткого кода. Применительно к вашему коду он выглядел бы так:

 function get_gifts_posts($atts, $content){ extract( shortcode_atts( array( 'post_type' => 'post', 'order' => 'desc', 'orderby' => 'date', 'posts_per_page'=> 5, ), $atts ) ); // function truncated // but you may now use $post_type, $order, $orderby and $posts_per_page variables } add_shortcode('super_awesome_shortcode', 'get_gifts_posts' ); 

Обновить

Штрих-код теперь будет использоваться следующим образом:

[super_awesome_shortcode posts_per_page="10"] где $ posts_per_page будет равна 10

или

[super_awesome_shortcode]

где $ posts_per_page будет равна умолчанию, 5.

shortcode_atts() объединяет атрибуты короткого кода пользователя с известными атрибутами и заполняет значения по умолчанию, когда это необходимо.