web-dev-qa-db-ja.com

ショートコードのページ区切りが進んでいません

私は動いている絵のギャラリーを持っています、私はポジショニングがフレキシブルになることができるようにそれをショートコードに変換しています、そして私は何度も何度もコードをコピーする必要はありません。

私が抱えている問題は、ページ付けが次のページに進まないことです。画像が表示され、ページネーションが表示され、ページ番号が表示されますが、2ページまたは3ページをクリックしても、画像、ページネーション、ページ番号は変わりません。 URLは変わりますが、内容は変わりません。

私はいくつかのマニュアルコードを含むページを持っています(それはページネーションがクリックされたときに機能し、前進または変化します)。

私が取り組んでいるサイトは、 http://joshrodg.com/test/banquet/2017-induction-banquet/ です。私のテストのショートコードは一番上(2017 Induction Banquetの下)、一番下のもの(手動コード)です。

私のショートコードは[halloffame rml_folder="16"]のようになります。

私の機能は以下のようになります。

function picture_gallery($atts){
    extract(shortcode_atts(array(
        'rml_folder' => 1
    ), $atts));

    $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
    query_posts("post_status=inherit&post_type=attachment&rml_folder=".$rml_folder."&orderby=title&order=asc&posts_per_page=12&paged=".$paged);

    if ( have_posts() ) :
        $return_string .= '<div id="album">';
            while ( have_posts() ) : the_post();
                $return_string .= '<div class="gallery">';
                    $image = wp_get_attachment_image(get_post_thumbnail_id($post->ID), 'medium');
                    $return_string .= '<a href="'.wp_get_attachment_url($post->ID).'" class="simplelightbox">'.$image.'</a>';
                    $return_string .= '<p>'.get_the_title().'</p>';
                $return_string .= '</div>';
            endwhile;
        $return_string .= '</div>';
    endif;

    $return_string .= '<div id="pagi">';
        $return_string .= '<div class="wrap">';
            $args = array(
                'prev_text' => __('<span class="left"></span><span class="ion-Android-arrow-dropleft"></span>'),
                'next_text' => __('<span class="ion-Android-arrow-dropright"></span><span class="right"></span>')
            );
            $return_string .= paginate_links($args);
        $return_string .= '</div>';
    $return_string .= '</div>';

    global $wp_query;
    $current_page = get_query_var( 'paged' );
    $pages = $wp_query->max_num_pages;
    $return_string .= '<p align="center">(Page: '.$current_page.' of '.$pages.')</p>';

    wp_reset_query();

    return $return_string;
}

function register_shortcodes(){
    add_shortcode('halloffame', 'picture_gallery');
}
add_action( 'init', 'register_shortcodes');

これは手動のコードで働いているので、私は何かが私のショートコードのコードでは全く正しくないと思います。

何か案は?

**アップデート**

そのため、ページ http://joshrodg.com/test/banquet/ では、ページ区切りは壊れていますが、 http:// joshrodgにあります。 com/test /宴会/ 2017誘導宴会/ ページネーション作品。 2017-induction-banquetは元の投稿で、 http://joshrodg.com/test/banquet/ の子投稿です。 http://joshrodg.com/test/banquet/ に、すべての子ページのコンテンツを表示しています。そのため、このページではなく、ショートコード自体が機能しています。したがって、ループに問題がある可能性があります。

このページのループは次のようになります。

<?php query_posts("order=asc&orderby=menu_order&posts_per_page=-1&post_type=page&post_parent=".$post->ID); ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <div class="wrap">
            <h2><?php the_title(); ?></h2>
        </div>
        <p><?php the_content(); ?></p>
    <?php endwhile; ?>
<?php wp_reset_query(); ?>

ショートコード内のループとこのページのループとの間に矛盾がある可能性があります。

元のページのページ付けは次のようになります。 http://joshrodg.com/test/banquet/2017-induction-banquet/page/2/

親ページのページ区切りは次のようになります。 http://joshrodg.com/test/banquet/page/2/

それが違いをもたらすかどうかわからないが、それは言及する価値があることを考え出した。

ありがとう、
ジョシュ

1
Josh Rodgers

それで、私はどうにか解決策を見つけることができました。

私は自分のショートコードでquery_postsを変更しようとしましたが、どういうわけか、私はそれを動かすことができませんでした。問題を修正したページでクエリを変更しました。

クエリは次のようになります。

<?php
    $args = array(
        'order' => 'asc',
        'orderby' => 'menu_order',
        'posts_per_page' => -1,
        'post_type' => 'page',
        'post_parent' => $post->ID

    );

    $query = new WP_Query( $args );
?>

    <?php while ( $query->have_posts() ) : $query->the_post(); ?>
        <div class="wrap">
            <h2><?php the_title(); ?></h2>
        </div>
        <p><?php the_content(); ?></p>
    <?php endwhile; ?>
<?php wp_reset_postdata(); ?>

ショートコードは変更されませんでした(ハイフンを削除する以外)。

そのため、2つのクエリは互いに競合していました。 query_postsWP_Queryという異なるクエリで問題が解決しました。

ありがとう、
ジョシュ

0
Josh Rodgers

ショートコード名にハイフンを使用しないでください。 https://codex.wordpress.org/Shortcode_API#Hyphens を参照してください。

1
Rick Hellewell