質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.99%

  • WordPress

    6013questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

ワードプレスである記事の投稿の表示がindex.phpの何ページ目かゲットしたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 231

gomatan1258

score 34

大変申し訳ありませんでした。実は当方がやりたいことがございまして、ワードプレスの最近の投稿のウィジェットのところで、そこの記事を選択すると、single.phpが表示されてしまいます。そうではなく、投稿一覧の方に行ってほしくて、何ページ目かをゲットしたかったです。ゲットできても上手くいくかわからないので、無責任な質問でした。申し訳ございません。やりたいことは、最近の投稿のところを選択して、リンクが投稿一覧のほうに遷移することです。

index.php

<?php get_header(); ?>
        <div id="main" class="container">
            <div id="posts">

                <?php if(have_posts()): 
                        while(have_posts()):
                            the_post();

                ?>
                <?php $p_slug = get_page_uri(get_the_ID()); ?>    
                <div id="<?php echo $p_slug ?>"></div>

                <div id="test"></div>
                <div class="post">
                    <div class="post-header">
                        <h2>
                            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                        </h2>
                    </div>
                    <div class="post-meta">
                        <?php echo get_the_date(); ?><?php the_category(', ') ?></div>
                    <div class="post-content">
                        <div class="post-image">

                        <?php if(has_post_thumbnail()): ?>
                        <?php the_post_thumbnail(array(100, 100)); ?>
                        <?php else: ?>
                        <img src="<?php echo get_template_directory_uri(); ?>/images.jpg" width="100" height="100">
                        <?php endif; ?>

                        </div>
                        <div class="post-body">
                            <div class="post-body-excerpt">
                                <?php the_content('',false,''); ?>
                            </div>

                            <div class="more"><a href="<?php the_permalink(); ?>">続きを読む</a></div>
                            <a href="<?php echo '#'.$p_slug ?>">ここ</a>
                        </div>

                    </div>
                </div>
                <?php endwhile;
                else:
                ?>

                <p>記事はありません!</p>

                <?php endif;
                ?>

                <div class="navigation">
                    <div class="prev"><?php previous_posts_link(); ?></div>
                    <div class="next"><?php next_posts_link(); ?></div>
                </div>
            </div><!--/posts-->
            <?php get_sidebar(); ?>
        </div><!--/main -->
        <?php get_footer(); ?>


single.php

<?php get_header(); ?>
        <div id="main" class="container">
            <div id="posts">

                <?php if(have_posts()): 
                        while(have_posts()):
                            the_post();

                ?>
                <div class="post">
                    <div class="post-header">
                        <h2>
                            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                        </h2>
                    </div>
                    <div class="post-meta">
                        <?php echo get_the_date(); ?><?php the_category(', ') ?></div>
                    <div class="post-content">
                        <p>
                            <?php the_content(); ?>
                        </p>

                    </div>
                </div>

                <div class="navigation">
                    <div class="prev"><?php previous_post_link(); ?></div>
                    <div class="next"><?php next_post_link(); ?></div>
                </div>

                <?php endwhile;
                else:
                ?>

                <p>記事はありません!</p>

                <?php endif;
                ?>

            </div><!--/posts-->
            <?php get_sidebar(); ?>
        </div><!--/main -->
        <?php get_footer(); ?>


sidebar.php

<div id="sidebar">
                <?php dynamic_sidebar(); ?>
            </div><!--/sidebar-->


header.php

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title><?php wp_title('|', true, 'right'); bloginfo('name'); ?></title>
        <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css">
        <link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_uri(); ?>">
        <?php wp_head(); ?>
    </head>
    <body>
        <?php if(is_front_page()) { if (get_header_image() !='') { ?>
        <div id="main_image">
            <img src="<?php header_image(); ?>" alt="" title="" />
        </div>
        <?php }; }; ?>
        <div id="header" class="container">
            <h1><a href="<?php echo home_url('/'); ?>"><?php bloginfo('name');?></a></h1>
            <div class="wrapper"><?php wp_nav_menu(); ?></div>
        </div><!--/header-->


page.php

<?php get_header(); ?>
        <div id="main" class="container">
            <div id="posts">

                <?php if(have_posts()): 
                        while(have_posts()):
                            the_post();

                ?>
                <div class="post">
                    <div class="post-header">
                        <h2>
                            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                        </h2>
                    </div>

                    <div class="post-content">
                        <?php the_content(); ?>

                    </div>
                </div>

                <?php endwhile;
                else:
                ?>

                <p>ページはありません!</p>

                <?php endif;
                ?>

            </div><!--/posts-->
            <?php get_sidebar(); ?>
        </div><!--/main -->
        <?php get_footer(); ?>


footer.php

<div id="footer" class="container">
            Copyright 2017<?php if(date("Y")!=2017) echo date("-Y"); ?> All right reserved, gomatan1258
        </div><!--/footer-->
        <?php wp_footer(); ?>

    </body>
</html>


functions.php

<?php 

add_theme_support( 'custom-header' );

add_theme_support('menus');

register_sidebar(
    array(
        before_widget => '<div class="widget">',
        after_widget => '</div>',
        before_title => '<h3>',
        after_title => '</h3>',
    )        
);

add_theme_support('post-thumbnails');

$cssdir = get_stylesheet_directory_uri();
wp_enqueue_script( 'theme-script', $cssdir.'/script.php', array('jquery'));

?>


当方はワードプレス初心者ですがよろしくお願いします。

追記です。
javascriptが使えるプラグイン

jQuery(function() {
    jQuery(".menu li").hover(function() {
        jQuery(this).children('ul').show();
    }, function() {
        jQuery(this).children('ul').hide();
    });//プルダウンメニューが表示されます

     var page;

    jQuery('.more a').on('click', function(event) {
        //aリンクの動作を停止
        event.preventDefault();
        //リンク先URLを取得
        page = jQuery(this).attr('href');
        jQuery(this).parent().load(page+' div.post-content p',function(){
            jQuery(this).parent().children().eq(0).hide();
        });
          //続きを読む ajaxでページ遷移せずにsingle.phpの一部が表示される
    });
      jQuery('a[href^=#]').click(function(){
        var speed = 500;
        var href= jQuery(this).attr("href");
        var target = jQuery(href == "#" || href == "" ? 'html' : href);
        var position = target.offset().top;
        jQuery("html, body").animate({scrollTop:position}, speed, "swing");
        return false;
    });//ページ内リンクすることができる
});


javascriptのほうが間違っていたので変更しました。

最新記事ではなく最近の投稿と書き直しました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2017/10/11 20:34

    記事でも投稿でもどっちでも良いです。 それをサイドバーにどうやって表示してるのか訊いてるんです。 WordPressにデフォルトで存在する最近の投稿のウィジェットを使ってるんですか?

    キャンセル

  • gomatan1258

    2017/10/11 20:41

    失礼しました。functions.phpにregister_sidebarという関数を入力して、最近の投稿というウィジェットを入れています。

    キャンセル

  • gomatan1258

    2017/10/11 20:45

    すみません、ドラッグアンドドロップでウィジェットを入れるやつです。

    キャンセル

回答 1

checkベストアンサー

+3

これで終わりにしておきます。
WordPressデフォルトのウィジェットの最近の投稿だとカスタマイズ出来ないと思うので、無理矢理出すしか方法は無いと思います。

以下の内容を書き込んで適当なファイル名で保存します。例 recent_posts.php

<?php 
$args = array(
    'post_type' => 'post', //ポストタイプ
    'posts_per_page' => 5, //表示件数
    );
    $the_query = new WP_Query( $args );
    if ( $the_query->have_posts() ):
    while ( $the_query->have_posts() ):
    $the_query->the_post();
?>
<p><a href="http://投稿一覧のURL" ><?php the_title();?></a></p>
<?php
endwhile;
endif;
wp_reset_query();

テーマのfunctions.phpに以下を追加

// ウィジェットでショートコードを使えるようにする
add_filter( 'widget_text', 'do_shortcode' );

// 任意のPHPファイルをショートコード化して扱えるようにする
function php_shortcode( $params = array() ) {
    extract( shortcode_atts( array(
        'file' => 'default'
    ), $params ));
    ob_start();
    include( get_template_directory() . "/$file.php" );
    return ob_get_clean();
}
add_shortcode( 'my_php', 'php_shortcode' );

カスタムHTMLのウィジェットを追加して以下を書き込む
[my_php file="recent_posts"]

表示件数、URL、レイアウト等は環境に合わせて適宜修正してください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/11 21:41

    ありがとうございます。やってみます。長くお付き合いいただいてありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • WordPress

    6013questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。