サポート » テーマ » ページのスラッグを取得したい

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • bnosuke

    (@bnosuke)

    皆さん初めまして。
    wordpress & PHP歴2週間のびーのすけと申します。
    以後お見知りおきを。

    さて、皆さん悩むことは同じですね。
    私も色々調べました。

    以下のコードで取得できると思います。

    get_page($page_id)->post_name;


    私は今はfunctions.phpに以下の関数を置いて使っています。
    関数の名前がぶつかりそうなので、不都合あれば適当に変えてください。

    function get_page_slug($page_id) {
        $page = get_page($page_id);
        return $page->post_name;
    }

    トピック投稿者 kanako

    (@kanako)

    ありがとうございます。
    私もwordpress、phpともに三日目で超初心者です…。初歩的なことが間違っていたらすみません。
    真似してfunctions.phpに関数を起き、
    page.php内で↓のようにしてみましたが、ページが真っ白になってしまいました。

    <?php get_header(); ?>
    
        <div id="content" class="clearfix">
            <?php get_sidebar(); ?>
    
            <div class="colMain">
    
            <?php get_the_category(); ?>
            <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
                <div class="post <?php get_page($page_id)->post_name; ?>" id="post-<?php the_ID(); ?>">
    
                    <h2 class="pagetitle"><?php the_title(); ?></h2>
    
                    <div class="entry">
                        <?php the_content('<p class="serif">' . __('Read the rest of this page &raquo;', 'kubrick') . '
    '); ?>
    
                        <?php wp_link_pages(array('before' => '<strong>' . __('Pages:', 'kubrick') . '</strong> ', 'after' => '
    ', 'next_or_number' => 'number')); ?>
    
                    </div>
                </div>
                <?php endwhile; endif; ?>
            <?php edit_post_link(__('Edit this entry', 'kubrick'), '<p class="postmetadata">', '
    '); ?>
            </div>
        </div>
    
    <?php include (TEMPLATEPATH . '/globalnav.php'); ?>
    
    <?php get_footer(); ?>
    モデレーター jim912

    (@jim912)

    kanakoさん、こんにちは。

    真っ白になってしまったのは、phpのバージョンの違いが原因だと思います。

    get_page($page_id)->post_name;

    という記述方法は、php5では動作しますが、php4ではパースエラーになってしまいます。

    上記のコード部分で出力するのであれば、

    <?php echo attribute_escape( $post->post_name ); ?>

    で出力できるはずです。

    jim912さんフォローありがとうございます。
    バージョンの違いについては把握してませんでした。

    さて、上記の私の記述について補足します。

    ○さも自分で考えたかのように書いてありますが、OKwaveで見つけた内容のアレンジでした。
    http://okwave.jp/qa4237376.html

    ○上記のコード

    get_page($page_id)->post_name;

    において、$page_idはスラッグを取得したい任意のページのIDを入れてください。

    ○今表示しているページのIDの取得方法はいくつか方法が見られます。

    ○個々のページを表示するときに標準ではURLが
    http://xxx.xxxx.xx/?page_id=123
    のようになっており、本当に$page_idと書いてしまうとそのページのIDが取得できます。
    が、これはセキュリティ上危険ではないかと思うので、こういったものを直接使うのは良くないと思います。
    他にも$p,$cat,$mなど、ブラウザのURL欄に表示されるものは直接さわらない方が無難でしょう。

    まだまだ不確かな情報もありますが、ひとまずこれで。

    とりあえず以上です。

    トピック投稿者 kanako

    (@kanako)

    jim912さん、bnosukeさん
    お返事が遅くなりましたが、おかげさまで解決しました!
    ↓のようにしました。

    <div class="post" id="<?php echo attribute_escape( $post->post_name ); ?>Page">
    
    </div>

    ありがとうございました!

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「ページのスラッグを取得したい」には新たに返信することはできません。