皆さん初めまして。
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;
}
ありがとうございます。
私も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 »', '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(); ?>
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欄に表示されるものは直接さわらない方が無難でしょう。
まだまだ不確かな情報もありますが、ひとまずこれで。
とりあえず以上です。
jim912さん、bnosukeさん
お返事が遅くなりましたが、おかげさまで解決しました!
↓のようにしました。
<div class="post" id="<?php echo attribute_escape( $post->post_name ); ?>Page">
</div>
ありがとうございました!