Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Постраничная пагинация
цитата
18/05/17 в 15:57
 Artemon
Не срабатывает постраничная пагинация на вордпресс. Сайт работает на теме MANTRA. установлен и активирован плагин WP-PageNavi. По рекомендации WP-PageNavi необходимо заменить код

<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>

на <?php wp_pagenavi(); ?>

данный код найден в файле wp-content/themes/mantra/includes/theme-loop.php

в следующем виде

<?php /*
* Main loop related functions
*
* @package mantra
* @subpackage Functions
*/


/**
* Sets the post excerpt length to 40 characters.
*
* To override this length in a child theme, remove the filter and add your own
* function tied to the excerpt_length filter hook.
*
* @since Mantra 1.0
* @return int
*/
function mantra_excerpt_length( $length ) {
global $mantra_excerptwords;
return $mantra_excerptwords;
}
add_filter( 'excerpt_length', 'mantra_excerpt_length' );

/**
* Returns a "Continue Reading" link for excerpts
*
* @since mantra 0.5
* @return string "Continue Reading" link
*/
function mantra_continue_reading_link() {
global $mantra_excerptcont;
return ' <a class="continue-reading-link" href="'. get_permalink() . '">' .$mantra_excerptcont.' <span class="meta-nav">&rarr; </span>' . '</a>';
}

/**
* Replaces "[...]" (appended to automatically generated excerpts) with an ellipsis and mantra_continue_reading_link().
*
* To override this in a child theme, remove the filter and add your own
* function tied to the excerpt_more filter hook.
*
* @since mantra 0.5
* @return string An ellipsis
*/
function mantra_auto_excerpt_more( $more ) {
global $mantra_excerptdots;
return $mantra_excerptdots. mantra_continue_reading_link();
}
add_filter( 'excerpt_more', 'mantra_auto_excerpt_more' );


/**
* Adds a pretty "Continue Reading" link to custom post excerpts.
*
* To override this link in a child theme, remove the filter and add your own
* function tied to the get_the_excerpt filter hook.
*
* @since mantra 0.5
* @return string Excerpt with a pretty "Continue Reading" link
*/
function mantra_custom_excerpt_more( $output ) {
if ( has_excerpt() && ! is_attachment() ) {
$output .= mantra_continue_reading_link();
}
return $output;
}

add_filter( 'get_the_excerpt', 'mantra_custom_excerpt_more' );

/**
* Adds a "Continue Reading" link to post excerpts created using the <!--more--> tag.
*
* To override this link in a child theme, remove the filter and add your own
* function tied to the the_content_more_link filter hook.
*
* @since mantra 2.1
* @return string Excerpt with a pretty "Continue Reading" link
*/
function mantra_more_link($more_link, $more_link_text) {
global $mantra_excerptcont;
$new_link_text = $mantra_excerptcont;
if (preg_match("/custom=(.*)/",$more_link_text,$m) ) {
$new_link_text = $m[1];
};
$more_link = str_replace($more_link_text, $new_link_text.' <span class="meta-nav">&rarr; </span>', $more_link);
$more_link = str_replace('more-link', 'continue-reading-link', $more_link);
return $more_link;
}
add_filter('the_content_more_link', 'mantra_more_link',10,2);

/**
* Allows post excerpts to contain HTML tags
* @since mantra 1.8.7
* @return string Excerpt with most HTML tags intact
*/

function mantra_trim_excerpt($text) {
global $mantra_excerptwords;
global $mantra_excerptcont;
global $mantra_excerptdots;
$raw_excerpt = $text;
if ( '' == $text ) {
//Retrieve the post content.
$text = get_the_content('');

//Delete all shortcode tags from the content.
$text = strip_shortcodes( $text );

$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]&gt;', $text);

$allowed_tags = '<a>,<img>,<b>,<strong>,<ul>,<li>,<i>,<h1>,<h2>,<h3>,<h4>,<h5>,<h6>,<pre>,<code>,<em>,<u>,<br>,<p>';
$text = strip_tags($text, $allowed_tags);

$words = preg_split("/[\n\r\t ]+/", $text, $mantra_excerptwords + 1, PREG_SPLIT_NO_EMPTY);
if ( count($words) > $mantra_excerptwords ) {
array_pop($words);
$text = implode(' ', $words);
$text = $text .' '.$mantra_excerptdots. ' <a href="'. get_permalink() . '">' .$mantra_excerptcont.' <span class="meta-nav">&rarr; </span>' . '</a>';
} else {
$text = implode(' ', $words);
}
}
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}




if ($mantra_excerpttags=='Enable') {
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'mantra_trim_excerpt');
}


/**
* Remove inline styles printed when the gallery shortcode is used.
*
* Galleries are styled by the theme in Mantra's style.css.
*
* @since mantra 0.5
* @return string The gallery style filter, with the styles themselves removed.
*/
function mantra_remove_gallery_css( $css ) {
return preg_replace( "#<style type='text/css'>(.*?)</style>#s", '', $css );
}
add_filter( 'gallery_style', 'mantra_remove_gallery_css' );


if ( ! function_exists( 'mantra_posted_on' ) ) :
/**
* Prints HTML with meta information for the current post—date/time and author.
*
* @since mantra 0.5
*/
function mantra_posted_on() {
global $mantra_options;
foreach ($mantra_options as $key => $value) {
${"$key"} = $value ;
}


$date_string = '<time class="onDate date published" datetime="' . get_the_time( 'c' ) . '"> %3$s <span class="bl_sep">|</span> </time>';
$date_string .= '<time class="updated" datetime="' . get_the_modified_date( 'c' ) . '">' . get_the_modified_date() . '</time>';

// If author is hidden don't give it a value
$author_string = sprintf( '<span class="author vcard" >'.__( 'By ','mantra'). ' <a class="url fn n" rel="author" href="%1$s" title="%2$s">%3$s</a> <span class="bl_sep">|</span></span>',
get_author_posts_url( get_the_author_meta( 'ID' ) ),
sprintf( esc_attr__( 'View all posts by %s', 'mantra' ), get_the_author() ),
get_the_author()
) ;
if ($mantra_postauthor == "Hide") $author_string='';

// Print the meta data
printf( '&nbsp; %4$s '.$date_string.' <span class="bl_categ"> %2$s </span> ',
'meta-prep meta-prep-author',
get_the_category_list( ', ' ),
sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date">%3$s</span> <span class="entry-time"> - %2$s</span></a>',
get_permalink(),
esc_attr( get_the_time() ),
get_the_date()
), $author_string

);
}
endif;

// Remove category from rel in categry tags.
add_filter( 'the_category', 'mantra_remove_category_tag' );
add_filter( 'get_the_category_list', 'mantra_remove_category_tag' );

function mantra_remove_category_tag( $text ) {
$text = str_replace('rel="category tag"', 'rel="tag"', $text); return $text;
}


if ( ! function_exists( 'mantra_posted_in' ) ) :
/**
* Prints HTML with meta information for the current post (category, tags and permalink).
*
* @since mantra 0.5
*/
function mantra_posted_in() {
// Retrieves tag list of current post, separated by commas.
$tag_list = get_the_tag_list( '', ', ' );
if ( $tag_list ) {
$posted_in = '<span class="bl_posted">'.__( 'Tagged','mantra').' %2$s.</span><span class="bl_bookmark">'.__(' Bookmark the ','mantra').' <a href="%3$s" title="'.__('Permalink to','mantra').' %4$s" rel="bookmark"> '.__('permalink','mantra').'</a>.</span>';
} elseif ( is_object_in_taxonomy( get_post_type(), 'category' ) ) {
$posted_in = '<span class="bl_bookmark">'.__( 'Bookmark the ','mantra'). ' <a href="%3$s" title="'.__('Permalink to','mantra').' %4$s" rel="bookmark">'.__('permalink','mantra').'</a>. </span>';
} else {
$posted_in = '<span class="bl_bookmark">'.__( 'Bookmark the ','mantra'). ' <a href="%3$s" title="'.__('Permalink to','mantra').' %4$s" rel="bookmark">'.__('permalink','mantra').'</a>. </span>';
}
// Prints the string, replacing the placeholders.
printf(
$posted_in,
get_the_category_list( ', ' ),
$tag_list,
get_permalink(),
the_title_attribute( 'echo=0' )
);
}
endif;

if ( ! function_exists( 'mantra_content_nav' ) ) :
/**
* Display navigation to next/previous pages when applicable
*/
function mantra_content_nav( $nav_id ) {
global $wp_query;

if ( $wp_query->max_num_pages > 1 ) : ?>
<nav id="<?php echo $nav_id; ?>" class="navigation">
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&laquo;</span> Older posts', 'mantra' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&raquo;</span>', 'mantra' ) ); ?></div>
</nav><!-- #nav-above -->
<?php endif;
}
endif; // mantra_content_nav

// Custom image size for use with post thumbnails
if($mantra_fcrop)
add_image_size( 'custom', $mantra_fwidth, $mantra_fheight, true );
else
add_image_size( 'custom', $mantra_fwidth, $mantra_fheight );


function cryout_echo_first_image ($postID)
{
$args = array(
'numberposts' => 1,
'order'=> 'ASC',
'post_mime_type' => 'image',
'post_parent' => $postID,
'post_status' => 'any',
'post_type' => 'any'
);

$attachments = get_children( $args );
//print_r($attachments);

if ($attachments) {
foreach($attachments as $attachment) {
$image_attributes = wp_get_attachment_image_src( $attachment->ID, 'custom' ) ? wp_get_attachment_image_src( $attachment->ID, 'custom' ) : wp_get_attachment_image_src( $attachment->ID, 'custom' );

return $image_attributes[0];

}
}
}

if ( ! function_exists( 'mantra_set_featured_thumb' ) ) :
/**
* Adds a post thumbnail and if one doesn't exist the first image from the post is used.
*/

function mantra_set_featured_thumb() {
global $mantra_options;
foreach ($mantra_options as $key => $value) {
${"$key"} = $value ;
}
global $post;
$image_src = cryout_echo_first_image($post->ID);

if ( function_exists("has_post_thumbnail") && has_post_thumbnail() && $mantra_fpost=='Enable')
the_post_thumbnail( 'custom', array("class" => "align".strtolower($mantra_falign)." post_thumbnail" ) );

else if ($mantra_fpost=='Enable' && $mantra_fauto=="Enable" && $image_src && ($mantra_excerptarchive != "Full Post" || $mantra_excerpthome != "Full Post"))
echo '<a title="'.the_title_attribute('echo=0').'" href="'.get_permalink().'" ><img width="'.$mantra_fwidth.'" title="" alt="" class="align'.strtolower($mantra_falign).' post_thumbnail" src="'.$image_src.'"></a>' ;

}
endif; // mantra_set_featured_thumb

if ($mantra_fpost=='Enable' && $mantra_fpostlink) add_filter( 'post_thumbnail_html', 'mantra_thumbnail_link', 10, 2 );

/**
* The thumbnail gets a link to the post's page
*/

function mantra_thumbnail_link( $html, $post_id ) {
$html = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr( get_post_field( 'post_title', $post_id ) ) . '">' . $html . '</a>';
return $html;
}
?>

Однако ,все возможные вариации замены функции php next_posts_link и previous_posts_link перeпробованы, но результата по отображению постраничной навигации на сайте нет.

Есть ли какие либо возможности установки постраничной пагинации на теме MANTRA? Возможно ли где то получить консультацию или содействие в установке постраничной пагинации?
цитата
18/05/17 в 16:17
 wgroove
а причем тут инклюд вообще?
вставь в index.php темы код
<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?> после <?php endif; ?>
должно заработать
цитата
18/05/17 в 16:36
 Artemon
файл index php следующего содержания, скажите пожайлуста куда какой код необходимо вставить ?











<?php
/**
* The main template file.
*
* This is the most generic template file in a WordPress theme
* and one of the two required files for a theme (the other being style.css).
* It is used to display a page when nothing more specific matches a query.
* E.g., it puts together the home page when no home.php file exists.
* Learn more: http://codex.wordpress.org/Template_Hierarchy
*
* @package Cryout Creations
* @subpackage Mantra
*/
get_header();
if ($mantra_frontpage=="Enable" && is_front_page() ):
mantra_frontpage_generator();
if ($mantra_frontposts=="Enable"): get_template_part('content','frontpage'); endif;
else:
?>
<section id="container">

<div id="content" role="main">

<?php cryout_before_content_hook(); ?><?php if ( have_posts() ) : ?>

<?php mantra_content_nav( 'nav-above' ); ?>

<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>

<?php get_template_part( 'content', get_post_format() ); ?>

<?php endwhile; ?>

<?php if($mantra_pagination=="Enable") mantra_pagination(); else mantra_content_nav( 'nav-below' ); ?>

<?php else : ?>

<article id="post-0" class="post no-results not-found">
<header class="entry-header">
<h1 class="entry-title"><?php _e( 'Nothing Found', 'mantra' ); ?></h1>
</header><!-- .entry-header -->

<div class="entry-content">
<p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'mantra' ); ?></p>
<?php get_search_form(); ?>
</div><!-- .entry-content -->
</article><!-- #post-0 -->

<?php endif; ?><?php cryout_after_content_hook(); ?>

</div><!-- #content -->
<?php get_sidebar(); ?>
</section><!-- #container -->
<?php
endif;
get_footer(); ?>
цитата
18/05/17 в 16:41
 wgroove
Artemon писал:
файл index php следующего содержания, скажите пожайлуста куда какой код необходимо вставить ?




<?php endif; ?>
         
         <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
         
         
         <?php cryout_after_content_hook(); ?>

         </div><!-- #content -->
   <?php get_sidebar(); ?>
      </section><!-- #container -->
<?php
endif;
get_footer(); ?>


думаю, разберешься
цитата
19/05/17 в 12:59
 mx-user
Вот эта мантра? ru.wordpress.org/themes/mantra/
У меня по умолчанию навигация работает, даже без плагина. Может какие другие плагины конфликутуют, у которых бывают расширения, типа YOAST SEO?

А так, вот этот код отвечает за пагинацию в файлах index.php (33-35 строки), category.php 43-47 и archive.php 51-55

<?php endwhile; ?>

<?php if($mantra_pagination=="Enable") mantra_pagination();
else mantra_content_nav( 'nav-below' ); ?>

<?php else : ?>

if($mantra_pagination=="Enable" говорит о том, что где-то в настройках пагинация должна включаться.
Изначально дополнительные плагины не нужны.
цитата
21/05/17 в 19:44
 Artemon
Да, YOAST SEO установлен . Возможно он мешает, Но дело в том .что сама страница которую надо пронумеровывать выбрана статической в настройках ,читал что статическая не может быть пронумерована. Попробую отключить YOAST SEO.
цитата
22/05/17 в 01:45
 mx-user
Artemon писал:
статическая не может быть пронумерована

может, если в ее шаблоне организован вывод записей.
Имя шаблона можно найти на странице редактирования той статической страницы.
А потом нужно найти файл, в котором этот шаблон описывается. В его начале будут строки типа
<?php
/*
Template Name: Имя шаблона
*/
?>
И уже в этом коде, нужно смотреть.
Может еще так случиться, что отредактирован стандартный шаблон для страниц, тогда для мантры файл будет называться content-page.php

Если хочешь, могу поковырять твою тему во вторник.
цитата
29/05/17 в 10:11
 pervect
У меня всё срабатывает вот как:
Код:
<?php if (function_exists('wp_corenavi')) wp_corenavi(); ?>

ПОСЛЕ цикла, форматирование сделал увидев код готовой страницы в браузере.

или
Код:

<div class="row">
           <div class="col-md-6 text-right prevnext">
              <?php previous_post_link('<i class="fa fa-arrow-circle-left fa-2x" aria-hidden="true"></i> &nbsp; %link <br><span class=small>(Previous clip)</span>'); ?>
            </div>
            <div class="col-md-6 text-left prevnext">
              <?php next_post_link('%link &nbsp;<i class="fa fa-arrow-circle-right fa-2x" aria-hidden="true"></i><br><span class=small>(Next clip)</span>'); ?>
            </div>
        </div>

Это - на странице именно поста.
Форматирование - первично. Соответствующие активные элементы обозначены через функцию previous_post_link (ее антагонист - next_post_link)

Собственно конструкция функции выглядит так: Код:
<?php previous_post_link('  %link '); ?>


Говорят, (сам не проверял), что точно также можно использовать конструкцию
Код:
<?php previous_posts_link('  %link '); ?>

(именно postS!)? которая выведет пагинацию уже не для отдельного поста, а для их массива.
цитата
29/05/17 в 17:15
 pervect
icon_redface.gif


Эта страница в полной версии