フォーラム

[解決済み] WordPressのデフォルトの仕様では、home.phpがトップページ? (32 件の投稿)

  1. jim912
    世話役
    2 years前の投稿 #

    doganteさん、こんにちは。

    念のため、現在検証中のクラス化する前のコード(jim912さんの上記のご指摘を適用後のコード)を以下へ張っておきます(動作しないコードです。)。

    またまたすみません。

    function set_home_page_on_front( $pre ) {
    	return $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE post_title = 'ホーム' AND post_type = 'page'" );
    }

    に$wpdbのグローバル宣言が抜けていました。

    function set_home_page_on_front( $pre ) {
    	global $wpdb;
    	return $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE post_title = 'ホーム' AND post_type = 'page'" );
    }

    それから、画面が真っ白になってしまって何もできないようでは、後々大変ですので、開発時や不具合が発生した場合はエラーを表示させるようにすると良いです。

    表示させる方法としては、.htaccessに

    php_flag display_errors On

    を記述するのが簡単かと思いますが、サーバによっては.htaccessでの変更を禁止している場合があります。このあたりはサーバのマニュアルを良く読んで対応方法を確認しておいてください。

    wp_page_menuについては、show_home=1が指定されると、それがページでなくとも出力する仕様になっていますね。これについては、ソースを見ればわかるかと思います。wp-includes/post-template.php line808-(ver2.8.4)

  2. dogante
    メンバー
    2 years前の投稿 #

    jim912さん
    ご回答、ありがとうございました。

    その1:
    クラス化する前のコードも、上記のjim912さんの修正を加えるとちゃんと動作するようになりました。

    その2:

    サーバによっては.htaccessでの変更を禁止している場合があります。このあたりはサーバのマニュアルを良く読んで対応方法を確認しておいてください。

    了解しました。

    その3:

    wp_page_menuについては、show_home=1が指定されると、それがページでなくとも出力する仕様になっていますね。これについては、ソースを見ればわかるかと思います。wp-includes/post-template.php line808-(ver2.8.4)

    上記は、勉強になりました。
    jim912さんのコードを使用しない場合で、かつ、管理画面のより固定ページをトップページとして設定していない場合、<?php wp_page_menu('sort_column=menu_order & show_home=1'); ?>では、以下のようにブラウザーに出力されていました。
    ●ホーム←トップページ
    ●ホーム←固定ページ
    ●ページ2
    ●ページ3

    私は、トップページのページタイトル「ホーム」は、固定ページのページタイトル「ホーム」を利用(固定ページのタイトルに合わせて)して「ホーム」となっているものだとばかり思っていました。

    しかし、上記のjim912さんにご指摘頂いたコードを見ると、予めサイトのトップページのページタイトルには「Home」というページタイトルがデフォルトとなっていたようですね。この「Home」が翻訳され、トップページのページタイトルが「ホーム」となっていることが分かりました。つまり、トップページのページタイトル「ホーム」は個別ページのページタイトル「ホーム」とは何の関係もなく、WP日本語版のトップページのデフォルトのページタイトルは、元々、「ホーム」となるようになっていたのですね。

    このスレの本題に関しては以上で解決しましたので、解決済みとさせていただきます。

返信

ログイン しなければ投稿できません。

About this Topic

Tags

タグ はまだありません。