Get dropdown options для Magic Fields 2
9 августа 2014 в 4:31 в категории Статьи о php 0 комментариевПлагин Magic Fields является достаточно популярным плагином для WordPress. Этот плагин позволяет создавать разные типы записей (custom post types) и дополнительные поля к ним. Популярен этот плагин ввиду своей простоты и гибкости.
Зачастую Magic Fields применяется для создания каталогов записей определенного типа. Это может быть портфолио, каталог товаров, каталог заведений, чего угодно. Как и в любом каталоге пользователю было бы удобнее найти требуемую ему единицу благодаря поиску или фильтру по параметрам этих записей. Для этого нужно вывести фильтр — вывести все варианты значений, которые могут принимать параметры, для того чтобы с ними работал посетитель. Для полей типа input конечно варианты значений в фильтр не выводят, а вот для select (dropdown list) вывести их необходимо, но к сожалению, нативными средствами плагина Magic Fields 2 тут не обойдешься.
В своем старом посте Реализуем поиск для Magic Fields 2 я рассматривал вариант SQL запроса прямо в шаблоне, но так делать не красиво, и вот, спустя время был обнаружен еще один способ!
Для того чтобы получить опции выпадающего списка дополнительного поля Magic Fields достаточно просто в файле functions.php создать нужную функцию и к ней обращаться в любом месте шаблона. Вот собственно и сама функция:
// Magic Field get dropdown options function get_field_options( $field, $post_type = NULL ) { global $wpdb, $post; static $field_options_cache = array(); if ( !$post_type ) { $post_type = get_post_type( $post->ID ); } if ( !array_key_exists( $post_type, $field_options_cache ) ) { $field_options_cache[$post_type] = array(); $sql = sprintf( "SELECT name, options FROM %s WHERE post_type = '%s'", MF_TABLE_CUSTOM_FIELDS, $post_type ); $results = $wpdb->get_results( $sql, ARRAY_A ); foreach ( $results as $result ) { $field_options_cache[$post_type][$result['name']] = unserialize( $result['options'] ); } } return $field_options_cache[$post_type][$field]; }
Вот таким нехитрым способом мы можем получить список опций для данного дополнительного поля, где среди прочих настроек будет хранится строка с опциями выпадающего списка разделенных через \n — т.е. новой строкой, как вы вводите эти данные в админке при создании поля.
На этом все. Удачного вам коддинга!