1

Тема: Вывод новостей, пагинация

Доброго времени суток.
такая проблема.

назначил статическую страницу новостей(вывод записей).

в коде у меня кроме инклуда хедера и футера ничего грубо говоря нет, записи выводятся в качестве статической страницы.

Вопрос: как сделать в данном случае, что бы выводились записи определенной категории, а не все.

и еще внизу у меня вместо пагинации "предыдущие записи", "следующие записи", как изменить это на пагинацию из цифр?

скачивал шаблон темы на underscores.me/

2

Re: Вывод новостей, пагинация

Для пагинации использую такой код:

$args = array(
    'screen_reader_text' => ' ',
    'show_all'           => false,
    'prev_next'          => true,
    'prev_text'          => __('←'),
    'next_text'          => __('→'),
    'type'               => 'plain',
    'add_args'           => false,
    'add_fragment'       => '',
    'end_size'     => 1,
    'mid_size'     => 2,
);

$pagination = get_the_posts_pagination($args);

if( !empty($pagination) ) {
    echo $pagination;
}

Для вывода записе по категориям используется файл archive.php, а не index.php (этот используется для вывода всех постов).

Просто зайдите в адмминке в категории записей и под каждой записью будет ссылка на вывод пjстов категории

http://wpdemo.webcodin.com/wp-content/uploads/2016/01/screenshot-7.png
На скрине выше список категорий справа. При наведении на каждую из них будут появляться ссылки на редактирование и просмотр категорий

3

Re: Вывод новостей, пагинация

japanes пишет:

Для пагинации использую такой код:

$args = array(
    'screen_reader_text' => ' ',
    'show_all'           => false,
    'prev_next'          => true,
    'prev_text'          => __('←'),
    'next_text'          => __('→'),
    'type'               => 'plain',
    'add_args'           => false,
    'add_fragment'       => '',
    'end_size'     => 1,
    'mid_size'     => 2,
);

$pagination = get_the_posts_pagination($args);

if( !empty($pagination) ) {
    echo $pagination;
}

Пагинация появилась, но, на следующую страницу не идет, урл адрес меняется, а контент остается тот же что и на 1 странице

4

Re: Вывод новостей, пагинация

.htaccess родной? какие настройки ссылок ( с этой страницы админки /wp-admin/options-permalink.php)?

5

Re: Вывод новостей, пагинация

japanes пишет:

.htaccess родной? какие настройки ссылок ( с этой страницы админки /wp-admin/options-permalink.php)?

сейчас такие -  => Название записи:    http://www.4genergy.ru/sample-post/

.htaccess в нем не шарю, но вроде родной, установил ВП  и не трогал

6

Re: Вывод новостей, пагинация

japanes пишет:

.htaccess родной? какие настройки ссылок ( с этой страницы админки /wp-admin/options-permalink.php)?

в корне сайта нашел файл такой, вот что там;

# BEGIN WordPress
# Строки между `BEGIN WordPress` и `END WordPress` были созданы автоматически.
# Они могут быть изменены только фильтрами WordPress.
# Все изменения между этими отметками будут перезаписаны.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

7

Re: Вывод новостей, пагинация

Проблема с пагинацией сразу отсылает к htaccess и настройкам ссылок. Попробуйте настройки ссылок изменить и вернуть в текущее состояние, возможно поможет.

Это при условии, что какой-то сторонний код не врияет на рерайты. У вас точно голая тема валит проблемы с пагинацией или уже после добавления кастомного кода?

8

Re: Вывод новостей, пагинация

japanes пишет:

Проблема с пагинацией сразу отсылает к htaccess и настройкам ссылок. Попробуйте настройки ссылок изменить и вернуть в текущее состояние, возможно поможет.

Это при условии, что какой-то сторонний код не врияет на рерайты. У вас точно голая тема валит проблемы с пагинацией или уже после добавления кастомного кода?



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

где вообще находится шаблон этого всего? нигде не могу найти, такие слова русские в кодах

9

Re: Вывод новостей, пагинация

По переводам и не получится найти. Там используется функции для вывода переводов, одна из них:

__( string $text, string $domain = 'default' )

В жизни выглядит как-то так так:

__( 'Ready to publish your first post? <a href="%1$s">Get started here</a>.', 'storefront' )

Вообще за вывод ленты постов с пагинацией отвечают 2 файла:
- index.php
- archive.php

В них будет код того как формируется страница.

К сожалению, не посмторев ваш код, я не смогу сказать, что именно ломает вашу пагинацию, но по вашему описанию и по настройкам ссылок и htaccess могу сказать, что скорее всего какой-то кастомный код из functions.php либо сторонний плагин ломают вашу пагинацию

10

Re: Вывод новостей, пагинация

japanes пишет:

По переводам и не получится найти. Там используется функции для вывода переводов, одна из них:

__( string $text, string $domain = 'default' )

В жизни выглядит как-то так так:

__( 'Ready to publish your first post? <a href="%1$s">Get started here</a>.', 'storefront' )

Вообще за вывод ленты постов с пагинацией отвечают 2 файла:
- index.php
- archive.php

В них будет код того как формируется страница.

К сожалению, не посмторев ваш код, я не смогу сказать, что именно ломает вашу пагинацию, но по вашему описанию и по настройкам ссылок и htaccess могу сказать, что скорее всего какой-то кастомный код из functions.php либо сторонний плагин ломают вашу пагинацию


а если и индекс и архив у меня пустые файлы?

11

Re: Вывод новостей, пагинация

А как у вас происходит вывод, через кастомную страицу? Вордпрессу же, всё равно, надо влезть в loop, чтоб сделать вывод всех постов в ленту. Т. е. он это где-то делает

12

Re: Вывод новостей, пагинация

japanes пишет:

А как у вас происходит вывод, через кастомную страицу? Вордпрессу же, всё равно, надо влезть в loop, чтоб сделать вывод всех постов в ленту. Т. е. он это где-то делает

сейчас попробую скинуть код.
первый раз с вордпресс работаю)

13

Re: Вывод новостей, пагинация

И вообще, я правильно понял задачу? Чтоб по урлу /news/ выводились новости?

14

Re: Вывод новостей, пагинация

japanes пишет:

И вообще, я правильно понял задачу? Чтоб по урлу /news/ выводились новости?

просто что бы пагинация работала big_smile уже неделю мучаюсь.

PunBB bbcode test

это страница на которой надо вывести

15

Re: Вывод новостей, пагинация

japanes пишет:

И вообще, я правильно понял задачу? Чтоб по урлу /news/ выводились новости?

http://www.4genergy.ru/news/

это вот то что получилось

16

Re: Вывод новостей, пагинация

Ну вообще немного не правильной дорожкой пошли :-)

Для этого надо добавить кастомный тип записи, например news:

1.Ставим плагин CPT UI - https://wordpress.org/plugins/custom-post-type-ui/. Активируем, в общем, всё как обычно
2. Добавляем кастомный тип записи news
3. При добавлении типа записи в настройках плагина надо найти поле "Has Archive" (как на русском оно обзывается я не знаю) и установить его в True
4. В меню навигации появится новый тип записей, отображается точно так же как и Записи, но только с названием, которое вы ему дадите. Все новости перенести туда
5. archive.php с таким кодом:

<?php
get_header();

if( is_archive() ) {

    if( is_category() || is_tag() || is_tax() ) {
        $current = $wp_query->get_queried_object();
        $curr_taxonomy = get_taxonomy($current->taxonomy);
        ?>
        <h1><?php echo $current->name; ?></h1>
        <?php
        if( ! empty($curr_taxonomy->description) ) {
            echo wpautop($curr_taxonomy->description);
        }
    }
    elseif( is_post_type_archive() ) {
        $current = $wp_query->get_queried_object();
        ?>
        <h1><?php echo $current->label ?></h1>
        <?php
        if( is_post_type_archive() ) {
            $post_type_description = cpt_description($wp_query->query['post_type']);
            if( ! empty($post_type_description) ) {
                echo wpautop($post_type_description);
            }
        }
    }
    elseif( is_author() ) {
        $current = $wp_query->get_queried_object();
        $author = get_user_by( 'slug', get_query_var( 'author_name' ) );
        $author_meta = get_user_meta($author->ID);
        ?>
        <h1><?php echo $current->data->display_name ?></h1>
        <?php
        if( ! empty($author_meta['description'][0]) ) {
            ?>
            <div>
                <?php echo wpautop($author_meta['description'][0]); ?>
            </div>
            <?php
        }
    }

}
?>

<?php
if( is_search() ) {
    ?>
    <h1><?php printf( 'Результаты поиска по&nbsp;запросу&nbsp;&mdash; "%s"', get_search_query() ); ?></h1>
    <?php
}
?>

<?php
if( have_posts() ) {
    while ( have_posts() ) :
        the_post();
        $image = get_the_post_thumbnail( $post->ID, 'medium' );
        ?>
        <div>

            <?php
            if( $image ) {
                ?>
                <a href="<?php echo get_permalink($post->ID); ?>">
                    <?php echo $image; ?>
                </a>
                <?php
            }
            ?>

            <p><a href="<?php echo get_permalink($post->ID); ?>"><?php echo get_the_title($post->ID); ?></a></p>
        </div>
    <?php
    endwhile;
    ?>

    <?php
    $args = array(
        'base'               => '%_%',
        'format'             => '?paged=%#%',
        'show_all'           => false,
        'prev_next'          => true,
        'prev_text'          => '',
        'next_text'          => '',
        'screen_reader_text' => '&nbsp;',
        'type'               => 'plain',
        'add_args'           => false,
        'add_fragment'       => '',
        'before_page_number' => '',
        'after_page_number'  => '',
        'end_size'     => 1,
        'mid_size'     => 2,
    );
    $pagination = get_the_posts_pagination($args);
    if( !empty($pagination) ) {
        ?>
        <?php
        echo $pagination;
        ?>
        <?php
    }
}
else {
    ?>
    <p>
        Записей нет
    </p>
    <?php
}

get_footer();

17

Re: Вывод новостей, пагинация

Там где надо будет поправьте HTML под себя :-)

18

Re: Вывод новостей, пагинация

Я там пару опечаток нашел, замените код, я вычистил всё лишнее

19

Re: Вывод новостей, пагинация

japanes пишет:

Там где надо будет поправьте HTML под себя :-)

а как установить это страницей для новостей?
установить архив как кастомку?

20

Re: Вывод новостей, пагинация

Опять провтыкал, вечер, чо :-) Надо удалить страницу, которая у вас сейчас news

21

Re: Вывод новостей, пагинация

И зайти в настрйоки ссылок, измеить текущие настройки, нажать сохранить, а после этого вернуться настройки к текущим

22

Re: Вывод новостей, пагинация

japanes пишет:

И зайти в настрйоки ссылок, измеить текущие настройки, нажать сохранить, а после этого вернуться настройки к текущим

Fatal error: Uncaught Error: Call to undefined function cpt_description() in /var/www/u0863422/data/www/4genergy.ru/wp-content/themes/gservice/archive.php:22 Stack trace: #0 /var/www/u0863422/data/www/4genergy.ru/wp-includes/template-loader.php(98): include() #1 /var/www/u0863422/data/www/4genergy.ru/wp-blog-header.php(19): require_once('/var/www/u08634...') #2 /var/www/u0863422/data/www/4genergy.ru/index.php(17): require('/var/www/u08634...') #3 {main} thrown in /var/www/u0863422/data/www/4genergy.ru/wp-content/themes/gservice/archive.php on line 22

23

Re: Вывод новостей, пагинация

Обновите archive.php

<?php
get_header();

if( is_archive() ) {

    if( is_category() || is_tag() || is_tax() ) {
        $current = $wp_query->get_queried_object();
        $curr_taxonomy = get_taxonomy($current->taxonomy);
        ?>
        <h1><?php echo $current->name; ?></h1>
        <?php
        if( ! empty($curr_taxonomy->description) ) {
            echo wpautop($curr_taxonomy->description);
        }
    }
    elseif( is_post_type_archive() ) {
        $current = $wp_query->get_queried_object();
        ?>
        <h1><?php echo $current->label ?></h1>
        <?php
    }
    elseif( is_author() ) {
        $current = $wp_query->get_queried_object();
        $author = get_user_by( 'slug', get_query_var( 'author_name' ) );
        $author_meta = get_user_meta($author->ID);
        ?>
        <h1><?php echo $current->data->display_name ?></h1>
        <?php
        if( ! empty($author_meta['description'][0]) ) {
            ?>
            <div>
                <?php echo wpautop($author_meta['description'][0]); ?>
            </div>
            <?php
        }
    }

}
?>

<?php
if( is_search() ) {
    ?>
    <h1><?php printf( 'Результаты поиска по&nbsp;запросу&nbsp;&mdash; "%s"', get_search_query() ); ?></h1>
    <?php
}
?>

<?php
if( have_posts() ) {
    while ( have_posts() ) :
        the_post();
        $image = get_the_post_thumbnail( $post->ID, 'medium' );
        ?>
        <div>

            <?php
            if( $image ) {
                ?>
                <a href="<?php echo get_permalink($post->ID); ?>">
                    <?php echo $image; ?>
                </a>
                <?php
            }
            ?>

            <p><a href="<?php echo get_permalink($post->ID); ?>"><?php echo get_the_title($post->ID); ?></a></p>
        </div>
    <?php
    endwhile;
    ?>

    <?php
    $args = array(
        'base'               => '%_%',
        'format'             => '?paged=%#%',
        'show_all'           => false,
        'prev_next'          => true,
        'prev_text'          => '',
        'next_text'          => '',
        'screen_reader_text' => '&nbsp;',
        'type'               => 'plain',
        'add_args'           => false,
        'add_fragment'       => '',
        'before_page_number' => '',
        'after_page_number'  => '',
        'end_size'     => 1,
        'mid_size'     => 2,
    );
    $pagination = get_the_posts_pagination($args);
    if( !empty($pagination) ) {
        ?>
        <?php
        echo $pagination;
        ?>
        <?php
    }
}
else {
    ?>
    <p>
        Записей нет
    </p>
    <?php
}

get_footer();

24

Re: Вывод новостей, пагинация

japanes пишет:

Обновите archive.php

<?php
get_header();

if( is_archive() ) {

    if( is_category() || is_tag() || is_tax() ) {
        $current = $wp_query->get_queried_object();
        $curr_taxonomy = get_taxonomy($current->taxonomy);
        ?>
        <h1><?php echo $current->name; ?></h1>
        <?php
        if( ! empty($curr_taxonomy->description) ) {
            echo wpautop($curr_taxonomy->description);
        }
    }
    elseif( is_post_type_archive() ) {
        $current = $wp_query->get_queried_object();
        ?>
        <h1><?php echo $current->label ?></h1>
        <?php
    }
    elseif( is_author() ) {
        $current = $wp_query->get_queried_object();
        $author = get_user_by( 'slug', get_query_var( 'author_name' ) );
        $author_meta = get_user_meta($author->ID);
        ?>
        <h1><?php echo $current->data->display_name ?></h1>
        <?php
        if( ! empty($author_meta['description'][0]) ) {
            ?>
            <div>
                <?php echo wpautop($author_meta['description'][0]); ?>
            </div>
            <?php
        }
    }

}
?>

<?php
if( is_search() ) {
    ?>
    <h1><?php printf( 'Результаты поиска по&nbsp;запросу&nbsp;&mdash; "%s"', get_search_query() ); ?></h1>
    <?php
}
?>

<?php
if( have_posts() ) {
    while ( have_posts() ) :
        the_post();
        $image = get_the_post_thumbnail( $post->ID, 'medium' );
        ?>
        <div>

            <?php
            if( $image ) {
                ?>
                <a href="<?php echo get_permalink($post->ID); ?>">
                    <?php echo $image; ?>
                </a>
                <?php
            }
            ?>

            <p><a href="<?php echo get_permalink($post->ID); ?>"><?php echo get_the_title($post->ID); ?></a></p>
        </div>
    <?php
    endwhile;
    ?>

    <?php
    $args = array(
        'base'               => '%_%',
        'format'             => '?paged=%#%',
        'show_all'           => false,
        'prev_next'          => true,
        'prev_text'          => '',
        'next_text'          => '',
        'screen_reader_text' => '&nbsp;',
        'type'               => 'plain',
        'add_args'           => false,
        'add_fragment'       => '',
        'before_page_number' => '',
        'after_page_number'  => '',
        'end_size'     => 1,
        'mid_size'     => 2,
    );
    $pagination = get_the_posts_pagination($args);
    if( !empty($pagination) ) {
        ?>
        <?php
        echo $pagination;
        ?>
        <?php
    }
}
else {
    ?>
    <p>
        Записей нет
    </p>
    <?php
}

get_footer();

кажется что то работает, сейчас гляну)

25

Re: Вывод новостей, пагинация

japanes пишет:

Обновите archive.php

<?php
get_header();

if( is_archive() ) {

    if( is_category() || is_tag() || is_tax() ) {
        $current = $wp_query->get_queried_object();
        $curr_taxonomy = get_taxonomy($current->taxonomy);
        ?>
        <h1><?php echo $current->name; ?></h1>
        <?php
        if( ! empty($curr_taxonomy->description) ) {
            echo wpautop($curr_taxonomy->description);
        }
    }
    elseif( is_post_type_archive() ) {
        $current = $wp_query->get_queried_object();
        ?>
        <h1><?php echo $current->label ?></h1>
        <?php
    }
    elseif( is_author() ) {
        $current = $wp_query->get_queried_object();
        $author = get_user_by( 'slug', get_query_var( 'author_name' ) );
        $author_meta = get_user_meta($author->ID);
        ?>
        <h1><?php echo $current->data->display_name ?></h1>
        <?php
        if( ! empty($author_meta['description'][0]) ) {
            ?>
            <div>
                <?php echo wpautop($author_meta['description'][0]); ?>
            </div>
            <?php
        }
    }

}
?>

<?php
if( is_search() ) {
    ?>
    <h1><?php printf( 'Результаты поиска по&nbsp;запросу&nbsp;&mdash; "%s"', get_search_query() ); ?></h1>
    <?php
}
?>

<?php
if( have_posts() ) {
    while ( have_posts() ) :
        the_post();
        $image = get_the_post_thumbnail( $post->ID, 'medium' );
        ?>
        <div>

            <?php
            if( $image ) {
                ?>
                <a href="<?php echo get_permalink($post->ID); ?>">
                    <?php echo $image; ?>
                </a>
                <?php
            }
            ?>

            <p><a href="<?php echo get_permalink($post->ID); ?>"><?php echo get_the_title($post->ID); ?></a></p>
        </div>
    <?php
    endwhile;
    ?>

    <?php
    $args = array(
        'base'               => '%_%',
        'format'             => '?paged=%#%',
        'show_all'           => false,
        'prev_next'          => true,
        'prev_text'          => '',
        'next_text'          => '',
        'screen_reader_text' => '&nbsp;',
        'type'               => 'plain',
        'add_args'           => false,
        'add_fragment'       => '',
        'before_page_number' => '',
        'after_page_number'  => '',
        'end_size'     => 1,
        'mid_size'     => 2,
    );
    $pagination = get_the_posts_pagination($args);
    if( !empty($pagination) ) {
        ?>
        <?php
        echo $pagination;
        ?>
        <?php
    }
}
else {
    ?>
    <p>
        Записей нет
    </p>
    <?php
}

get_footer();

Работет вроде как, но, когда перешел на 2 страницу, на первую нельзя вернуться, снова прогружается вторая