Плагин WPMOVIELIBRARY(фильмотека) для wordpress

Автор firit, 09 марта 2017, 18:27:19

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

firit

Здравствуйте,В данном плагине использую шоркод [movie_grid].Который на страницу выводит буквы алфавита для поиска фильмов по первой букве названия.Было на английском
в файле class-wpmoly-grid.php
$default = str_split( '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' );
$letters = array();

Я поменял на русский алфавит,вместо букв выводились знаки вопроса.Пришлось переделать на
$default = preg_split( «//ui»,'0123456789АБВГДЕЁЖЗИЙКЛМНОПРСТШЩЫЮЯЦФй' );
$letters = array();

Все встало как и надо.Но поиск по русским буквам не происходит.Пишет не не найдено.
Сам поиск работает проверял,работают цифры и английский алфавит.
Помогите доделать(переделать) код,чтоб происходил поиск по русскому алфавиту!?
——- class-wpmoly-grid.php —————-
Открыть содержимое (спойлер)

<?php
/**
* WPMovieLibrary Movie Grid Class extension.
*
* @package WPMovieLibrary
* @author Charlie MERLAND <charlie@caercam.org>
* @license GPL-3.0
* @link http://www.caercam.org/
* @copyright 2016 CaerCam.org
*/
if ( ! class_exists( 'WPMOLY_Grid' ) ) :
class WPMOLY_Grid extends WPMOLY_Movies {
/** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Movie Grid
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/**
* Generate alphanumerical breadcrumb menu for Grid view
*
* @since 2.0
*
* @param array Shortcode arguments to use as parameters
* @param boolean Are we actually doing a Shortcode?
*
* @return string HTML content
*/
public static function get_menu( $args, $shortcode = false ) {
global $wpdb, $wp_query;
$defaults = array(
'order' => wpmoly_o( 'movie-archives-movies-order', $default = true ),
'orderby' => wpmoly_o( 'movie-archives-movies-orderby', $default = true ),
'columns' => wpmoly_o( 'movie-archives-grid-columns', $default = true ),
'rows' => wpmoly_o( 'movie-archives-grid-rows', $default = true ),
'editable' => wpmoly_o( 'movie-archives-frontend-edit', $default = true ),
'advanced' => wpmoly_o( 'movie-archives-frontend-advanced-edit', $default = false ),
'meta' => »,
'detail' => »,
'value' => »,
'letter' => »,
'view' => 'grid'
);
$args = wp_parse_args( $args, $defaults );
// Allow URL params to override settings
$_args = WPMOLY_Archives::parse_query_vars( $wp_query->query );
$args = wp_parse_args( $_args, $args );
extract( $args );
$baseurl = get_permalink();
/*if ( true === $shortcode ) {
$baseurl = get_permalink();
} else {
$baseurl = get_post_type_archive_link( 'movie' );
}*/
$views = array( 'grid', 'archives', 'list' );
if ( '1' == wpmoly_o( 'rewrite-enable' ) )
$views = array( 'grid' => __( 'grid', 'wpmovielibrary' ), 'archives' => __( 'archives', 'wpmovielibrary' ), 'list' => __( 'list', 'wpmovielibrary' ) );
$_view = array_search( $view, $views );
if ( false !== $_view )
$view = $_view;
$default = preg_split( «//ui»,'0123456789АБВГДЕЁЖЗИЙКЛМНОПРСТШЩЫЮЯЦФ' );
$letters = array();
$result = $wpdb->get_results( «SELECT DISTINCT LEFT(post_title, 1) as letter FROM {$wpdb->posts} WHERE post_type='movie' AND post_status='publish' ORDER BY letter» );
foreach ( $result as $r )
$letters[] = $r->letter;
$limit = wpmoly_o( 'movie-archives-movies-limit' );
$attributes = compact( 'letters', 'default', 'letter', 'order', 'orderby', 'columns', 'rows', 'meta', 'detail', 'value', 'editable', 'advanced', 'limit', 'view' );
$urls = array();
$l10n = false;
$args = compact( 'order', 'orderby', 'columns', 'rows', 'meta', 'detail', 'value', 'l10n', 'baseurl', 'view' );
$urls['all'] = WPMOLY_Utils::build_meta_permalink( $args );
$args['letter'] = $letter;
$args['view'] = 'list';
$urls['list'] = WPMOLY_Utils::build_meta_permalink( $args );
$args['view'] = 'archives';
$urls['archives'] = WPMOLY_Utils::build_meta_permalink( $args );
$args['view'] = 'grid';
$urls['grid'] = WPMOLY_Utils::build_meta_permalink( $args );
$args['view'] = $view;
$args['letter'] = ':letter:';
$urls['letter'] = WPMOLY_Utils::build_meta_permalink( $args );
$args['letter'] = $letter;
$args['order'] = 'ASC';
$urls['asc'] = WPMOLY_Utils::build_meta_permalink( $args );
$args['order'] = 'DESC';
$urls['desc'] = WPMOLY_Utils::build_meta_permalink( $args );
$attributes['urls'] = $urls;
$theme = wp_get_theme();
if ( ! is_null( $theme->stylesheet ) )
$attributes['theme'] = ' theme-' . $theme->stylesheet;
else
$attributes['theme'] = »;
$content = self::render_template( 'movies/grid/menu.php', $attributes, $require = 'always' );
return $content;
}
/**
* Generate Movie Grid
*
* If a current letter is passed to the query use it to narrow
* the list of movies.
*
* @since 2.0
*
* @param array Shortcode arguments to use as parameters
* @param boolean Are we actually doing a Shortcode?
*
* @return string HTML content
*/
public static function get_content( $args = array(), $shortcode = false ) {
global $wpdb, $wp_query;
$defaults = array(
'columns' => wpmoly_o( 'movie-archives-grid-columns', $default = true ),
'rows' => wpmoly_o( 'movie-archives-grid-rows', $default = true ),
'paged' => 1,
'category' => null,
'tag' => null,
'collection' => null,
'actor' => null,
'genre' => null,
'meta' => null,
'detail' => null,
'value' => null,
'title' => false,
'year' => false,
'rating' => false,
'letter' => true,
'order' => wpmoly_o( 'movie-archives-movies-order', $default = true ),
'orderby' => 'post_title',
'view' => 'grid'
);
$args = wp_parse_args( $args, $defaults );
// Allow URL params to override Shortcode settings
$_args = WPMOLY_Archives::parse_query_vars( $wp_query->query );
$args = wp_parse_args( $_args, $args );
// debug
$main_args = $args;
extract( $args, EXTR_SKIP );
$total = 0;
$grid_meta = (array) wpmoly_o( 'movie-archives-movies-meta', $default = true );
$grid_meta = array_keys( $grid_meta['used'] );
$title = ( $title || in_array( 'title', $grid_meta ) );
$rating = ( $rating || in_array( 'rating', $grid_meta ) );
$year = ( $year || in_array( 'year', $grid_meta ) );
$views = array( 'grid', 'archives', 'list' );
if ( '1' == wpmoly_o( 'rewrite-enable' ) )
$views = array( 'grid' => __( 'grid', 'wpmovielibrary' ), 'archives' => __( 'archives', 'wpmovielibrary' ), 'list' => __( 'list', 'wpmovielibrary' ) );
if ( ! isset( $views[ $view ] ) ) {
$_view = array_search( $view, $views );
if ( false != $_view )
$view = $_view;
else
$view = 'grid';
}
$movies = array();
$total = wp_count_posts( 'movie' );
$total = $total->publish;
$select = array( 'SQL_CALC_FOUND_ROWS DISTINCT ID' );
// Limit the maximum number of terms to get
$number = $columns * $rows;
$limit = wpmoly_o( 'movie-archives-movies-limit', $default = true );
if ( -1 == $number )
$number = $limit;
$columns = min( $columns, 8 );
if ( 0 > $columns )
$columns = wpmoly_o( 'movie-archives-grid-columns', $default = true );
$rows = min( $rows, 12 );
if ( 0 > $rows )
$rows = wpmoly_o( 'movie-archives-grid-rows', $default = true );
// Calculate offset
$offset = 0;
if ( $paged )
$offset = max( 0, $number * ( $paged — 1 ) );
if ( » == $meta && » != $detail ) {
$meta = $detail;
$type = 'detail';
}
else {
$type = 'meta';
}
// Don't use LIMIT with weird values
$limit = «LIMIT 0,$number»;
if ( $offset >= $number )
$limit = sprintf( 'LIMIT %d,%d', $offset, $number );
$where = array( «post_type='movie'», » AND post_status='publish'» );
if ( » != $letter )
$where[] = » AND post_title LIKE '» . wpmoly_esc_like( $letter ) . «%'»;
$join = array();
$meta_query = array( 'join' => array(), 'where' => array() );
if ( » != $value && » != $meta ) {
$meta_query = call_user_func( «WPMOLY_Search::by_$meta», $value, 'sql' );
$join[] = $meta_query['join'];
$where[] = $meta_query['where'];
}
$tax_query = array();
if ( ! is_null( $collection ) && ! empty( $collection ) ) {
$tax_query = array(
'taxonomy' => 'collection',
'terms' => $collection,
);
} elseif ( ! is_null( $genre ) && ! empty( $genre ) ) {
$tax_query = array(
'taxonomy' => 'genre',
'terms' => $genre,
);
} elseif ( ! is_null( $actor ) && ! empty( $actor ) ) {
$tax_query = array(
'taxonomy' => 'actor',
'terms' => $actor,
);
} elseif ( ! is_null( $category ) && ! empty( $category ) ) {
$tax_query = array(
'taxonomy' => 'category',
'terms' => $category,
);
} elseif ( ! is_null( $tag ) && ! empty( $tag ) ) {
$tax_query = array(
'taxonomy' => 'post_tag',
'terms' => $tag,
);
}
if ( ! empty( $tax_query ) ) {
$tax_query = array(
'relation' => 'OR',
array(
'taxonomy' => $tax_query['taxonomy'],
'field' => 'slug',
'terms' => $tax_query['terms'],
),
array(
'taxonomy' => $tax_query['taxonomy'],
'field' => 'name',
'terms' => $tax_query['terms'],
)
);
$tax_query = get_tax_sql( $tax_query, $wpdb->posts, 'ID' );
$join[] = $tax_query['join'];
$where[] = $tax_query['where'];
}
$_orderby = array(
'year' => 'release_date',
'date' => 'release_date',
'localdate' => 'local_release_date',
'rating' => 'rating'
);
if ( in_array( $orderby, array_keys( $_orderby ) ) ) {
$select[] = ' pm.meta_value AS value';
$join[] = ' INNER JOIN wp_postmeta AS pm ON ( wp_posts.ID = pm.post_id )';
$where[] = ' AND pm.meta_key = «_wpmoly_movie_' . $_orderby[ $orderby ] . '»';
$orderby = 'value';
} elseif ( 'post_date' == $orderby ) {
$orderby = 'post_date';
} else {
$orderby = 'post_title';
}
$where = implode( », $where );
$join = implode( », $join );
$select = implode( ',', $select );
$query = «SELECT {$select} FROM {$wpdb->posts} {$join} WHERE {$where} ORDER BY {$orderby} {$order} {$limit}»;
$movies = $wpdb->get_col( $query );
$total = $wpdb->get_var( 'SELECT FOUND_ROWS() AS total' );
$movies = array_map( 'get_post', $movies );
if ( 'list' == $view )
$movies = self::prepare_list_view( $movies );
$baseurl = get_permalink();
/*if ( true === $shortcode ) {
$baseurl = get_permalink();
} else {
$baseurl = get_post_type_archive_link( 'movie' );
}*/
$args = array(
'order' => $order,
'columns' => $columns,
'rows' => $rows,
'letter' => $letter,
'value' => $value,
$type => $meta,
'l10n' => false,
'view' => $view,
'baseurl' => $baseurl
);
$url = WPMOLY_Utils::build_meta_permalink( $args );
// debug
$permalinks_args = $args;
global $wp_rewrite;
$format = '/page/%#%';
if ( » == $wp_rewrite->permalink_structure )
$format = '&paged=%#%';
$args = array(
'type' => 'list',
'total' => ceil( ( $total ) / $number ),
'current' => max( 1, $paged ),
'format' => $url . $format,
);
$paginate = WPMOLY_Utils::paginate_links( $args );
$paginate = '<div id=»wpmoly-movies-pagination»>' . $paginate . '</div>';
$theme = wp_get_theme();
if ( ! is_null( $theme->stylesheet ) )
$theme = ' theme-' . $theme->stylesheet;
else
$theme = »;
// debug
$debug = null;
if ( current_user_can( 'manage_options' ) && '1' == wpmoly_o( 'debug-mode' ) ) {
$debug = compact( 'main_args', 'permalinks_args' );
}
$attributes = compact( 'movies', 'columns', 'title', 'year', 'rating', 'theme', 'debug' );
$content = self::render_template( «movies/grid/$view-loop.php», $attributes, $require = 'always' );
$content = $content . $paginate;
return $content;
}
/**
* Prepare the list view movie list
*
* Explode the movie list by letters to show an alphabetical list
*
* @since 2.1.1
*
* @param array $movies Movies to list
*
* @return array Multidimensionnal array containing prepared movies
*/
public static function prepare_list_view( $movies ) {
global $post;
$list = array();
$default = preg_split( «//ui»,'0123456789АБВГДЕЁЖЗИЙКЛМНОПРСТШЩЫЮЯЦФ' );
$current = »;
if ( empty( $movies ) )
return $movies;
foreach ( $movies as $post ) {
setup_postdata( $post );
$_current = substr( remove_accents( get_the_title() ), 0, 1 );
if ( $_current != $current )
$current = $_current;
$list[ $current ][] = array( 'id' => get_the_ID(), 'url' => get_permalink(), 'title' => get_the_title() );
}
wp_reset_postdata();
return $list;
}
}
endif;
[свернуть]
SOS!!!!

alsoijw

Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

firit

Да вроде нет.Выводится алфавит русский.В базе данные беруться с
$result = $wpdb->get_results( "SELECT DISTINCT LEFT([b]post_title[/b], 1) as letter FROM {$wpdb->posts} WHERE post_type='movie' AND post_status='publish' ORDER BY letter" );

таблица WP_POSTS графа post_title,на таблицу стоит
Тип таблиц - Inn0DB
Сравнение - utf8_unicode_ci
ROW_FORMAT - COMPACT


Те буквы, на которые в базе есть названия фильмов,активные для клика,другие буквы не активные.Но при клике на букву выводиться сообщение
ЦитироватьЭто несколько неловко,
- Мы не можем   найти любой фильм, который соответствует Вашим критериям.
(Через переводчик,ломанный  :) )

Добавлял рядом с русским алфавитом английский,при нажатии на английскую букву без проблем выискиваются фильмы с этой буквой.(делал пробную страничку с буквой английской).
SOS!!!!

alsoijw

Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

firit

#4
Это как?  ???

Cообщение объединено 10 Марта 2017, 19:30:21

menu.php


<ul id="wpmoly-movie-grid-menu" class="wpmoly movies grid menu list<?php echo $theme?>">

<?php
$current 
$letter;
foreach ( 
$default as $l ) :
$_url str_replace':letter:'$l$urls['letter'] );
?>

<li id="wpmoly-movie-grid-menu-item-<?php echo $l ?>" class="wpmoly movies grid menu list item<?php if ( strtolower$l ) == strtolower$current ) ) echo ' active'?>"><?php if ( in_array$l$letters ) ) { ?><a href="<?php echo $_url?>"><?php echo $l?></a><?php } else { echo $l; } ?></li>

<?php endforeach; ?>
<li id="wpmoly-movie-grid-menu-item-all" class="wpmoly movies grid menu list item<?php if ( 'all' == $current ) echo ' active'?>"><a href="<?php echo  $urls['all']; ?>"><?php _e'All''wpmovielibrary' ?></a></li>
</ul>

<form id="wpmoly-grid-form" action="">
<input type="submit" value="" style="display:none" />
<ul id="wpmoly-movie-grid-menu-2" class="wpmoly movies grid menu list<?php echo $theme?>">
<li id="wpmoly-movie-grid-menu-item-alpha-asc" class="wpmoly movies grid menu list item<?php if ( 'ASC' == $order ) echo ' active'?>"><a href="<?php echo str_replace( array( 'DESC''desc' ), 'ASC'$urls['asc'] ) ?>" title="<?php _e'List ascendingly alphabetically''wpmovielibrary' ?>"><span class="wpmolicon icon-sort-alpha-asc"></span></a></li>
<li id="wpmoly-movie-grid-menu-item-alpha-desc" class="wpmoly movies grid menu list item<?php if ( 'DESC' == $order ) echo ' active'?>"><a href="<?php echo str_replace( array( 'ASC''asc' ), 'DESC'$urls['desc'] ) ?>" title="<?php _e'List descendingly alphabetically''wpmovielibrary' ?>"><span class="wpmolicon icon-sort-alpha-desc"></span></a></li>
<?php if ( '1' == $editable ) : ?>
<li id="wpmoly-movie-grid-menu-item-list" class="wpmoly movies grid menu list item<?php if ( 'list' == $view ) echo ' active'?>"><a href="<?php echo $urls['list']; ?>" title="<?php _e'Show movies as an extended list''wpmovielibrary' ?>"><span class="wpmolicon icon-align-justify"></span></a></li>
<li id="wpmoly-movie-grid-menu-item-archives" class="wpmoly movies grid menu list item<?php if ( 'archives' == $view ) echo ' active'?>"><a href="<?php echo $urls['archives']; ?>" title="<?php _e'Show movies as a list of titles''wpmovielibrary' ?>"><span class="wpmolicon icon-th-list"></span></a></li>
<li id="wpmoly-movie-grid-menu-item-grid" class="wpmoly movies grid menu list item<?php if ( 'grid' == $view ) echo ' active'?>"><a href="<?php echo $urls['grid']; ?>" title="<?php _e'Show movies as a poster grid''wpmovielibrary' ?>"><span class="wpmolicon icon-grid"></span></a></li>

<?php endif; ?>

</ul>
</form>




loop.php


<?php if ( ! is_null$debug ) ) : ?>
<div>
<strong>$main_args:</strong><br />
<pre><?php print_r$debug['main_args'] ); ?></pre>
<strong>$permalinks_args:</strong><br />
<pre><?php print_r$debug['permalinks_args'] ); ?></pre>
</div>
<?php endif; ?>

<div id="wpmoly-movie-grid" class="wpmoly movies grid grid-col-<?php echo $columns $theme?><?php if ( $title || $year || $rating ) echo ' spaced'?>">

<?php
global $post;
if ( ! empty( 
$movies ) ) :
foreach ( $movies as $post ) :
setup_postdata$post );

$size 'medium';
if ( == $columns )
$size 'large';

$class 'wpmoly movie';
if ( $title )
$class .= ' with-title';
if ( $year )
$class .= ' with-year';
if ( $rating )
$class .= ' with-rating';
?>

<div id="wpmoly-movie-<?php the_ID(); ?>" <?php post_class$class ?>>
<a class="wpmoly grid movie link" title="<?php the_title(); ?>" href="<?php the_permalink(); ?>">
<?php if ( has_post_thumbnail() ) the_post_thumbnail$size, array( 'class' => 'wpmoly grid movie poster' ) ); ?>
<?php  if ( $title ) : ?>
<h4 class="wpmoly grid movie title"><?php the_title(); ?></h4>
<?php  endif; if ( $year ) : ?>
<span class="wpmoly grid movie year"><?php echo apply_filters'wpmoly_format_movie_release_date'wpmoly_get_movie_metaget_the_ID(), 'release_date' ), 'Y' ); ?></span>
<?php  endif; if ( $rating ) : ?>
<span class="wpmoly grid movie rating"><?php echo apply_filters'wpmoly_movie_rating_stars'wpmoly_get_movie_ratingget_the_ID() ) ); ?></span>
<?php  endif; ?>
</a>
</div>

<?php
endforeach;
wp_reset_postdata();
else :
?>

<h5><?php _e'This is somewhat embarrassing, isn&rsquo;t it?''wpmovielibrary' ); ?></h5>
<p><?php _e'We could&rsquo;t find any movie matching your criteria.''wpmovielibrary' ); ?></p>
<?php endif; ?>

</div>




Я не могу найти ту функцию которая выводит данные поиска(при нажатии какой либо буквы,активной)?
SOS!!!!

alsoijw

Я не писал на php ничего. Могу предположить, что код для этого находится в скрипте, генерирующем ответ и в случае неудачи пишет, что не найдено.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?