質問するログイン新規登録
WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

748閲覧

wp-admin の function を functions.php でカスタマイズする方法:日本語ドメイン

sakiwai

総合スコア0

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/03/07 03:19

0

0

Wordpress 投稿編集画面のスラッグ編集欄で、日本語ドメインが decode されて表示されるようにカスタマイズしています。

https://xn--u9jxfoe1dzd3589ao4bi76dgz5a.com
https://私の日本語ドメイン.com

と表示されるように。

wp-admin/includes/post.php

function get_sample_permalink_html
の $display_link を str_replace したらうまくいきました。
rawurldecode($display_link) ではだめでした。

function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) { $post = get_post( $id ); if ( ! $post ) { return ''; } list($permalink, $post_name) = get_sample_permalink( $post->ID, $new_title, $new_slug ); $view_link = false; $preview_target = ''; if ( current_user_can( 'read_post', $post->ID ) ) { if ( 'draft' === $post->post_status || empty( $post->post_name ) ) { $view_link = get_preview_post_link( $post ); $preview_target = " target='wp-preview-{$post->ID}'"; } else { if ( 'publish' === $post->post_status || 'attachment' === $post->post_type ) { $view_link = get_permalink( $post ); } else { // Allow non-published (private, future) to be viewed at a pretty permalink, in case $post->post_name is set. $view_link = str_replace( array( '%pagename%', '%postname%' ), $post->post_name, $permalink ); } } } // Permalinks without a post/page name placeholder don't have anything to edit. if ( false === strpos( $permalink, '%postname%' ) && false === strpos( $permalink, '%pagename%' ) ) { $return = '<strong>' . __( 'Permalink:' ) . "</strong>\n"; if ( false !== $view_link ) { $display_link = urldecode( $view_link ); **$my_encoded_domain = 'xn--u9jxfoe1dzd3589ao4bi76dgz5a.com'; $my_decoded_domain = '私の日本語ドメイン.com'; $display_link = str_replace( $my_encoded_domain, $my_decoded_domain, $display_link);** $return .= '<a id="sample-permalink" href="' . esc_url( $view_link ) . '"' . $preview_target . '>' . esc_html( $display_link ) . "</a>\n"; } else { $return .= '<span id="sample-permalink">' . $permalink . "</span>\n"; } // Encourage a pretty permalink setting. if ( ! get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && ! ( 'page' === get_option( 'show_on_front' ) && get_option( 'page_on_front' ) == $id ) ) { $return .= '<span id="change-permalinks"><a href="options-permalink.php" class="button button-small" target="_blank">' . __( 'Change Permalinks' ) . "</a></span>\n"; } } else { if ( mb_strlen( $post_name ) > 34 ) { $post_name_abridged = mb_substr( $post_name, 0, 16 ) . '&hellip;' . mb_substr( $post_name, -16 ); } else { $post_name_abridged = $post_name; } $post_name_html = '<span id="editable-post-name">' . esc_html( $post_name_abridged ) . '</span>'; **$my_encoded_domain = 'xn--u9jxfoe1dzd3589ao4bi76dgz5a.com'; $my_decoded_domain = '私の日本語ドメイン.com'; $display_link = str_replace( $my_encoded_domain, $my_decoded_domain, $display_link);** $return = '<strong>' . __( 'Permalink:' ) . "</strong>\n"; $return .= '<span id="sample-permalink"><a href="' . esc_url( $view_link ) . '"' . $preview_target . '>' . $display_link . "</a></span>\n"; $return .= '&lrm;'; // Fix bi-directional text display defect in RTL languages. $return .= '<span id="edit-slug-buttons"><button type="button" class="edit-slug button button-small hide-if-no-js" aria-label="' . __( 'Edit permalink' ) . '">' . __( 'Edit' ) . "</button></span>\n"; $return .= '<span id="editable-post-name-full">' . esc_html( $post_name ) . "</span>\n"; } /** * Filters the sample permalink HTML markup. * * @since 2.9.0 * @since 4.4.0 Added `$post` parameter. * * @param string $return Sample permalink HTML markup. * @param int $post_id Post ID. * @param string $new_title New sample permalink title. * @param string $new_slug New sample permalink slug. * @param WP_Post $post Post object. */ $return = apply_filters( 'get_sample_permalink_html', $return, $post->ID, $new_title, $new_slug, $post ); return $return; }

これを、オリジナルを編集しないで、 子テーマの functions.php に記述してカスタマイズするにはどのようにしたらよいですか?
add_filter('get_sample_permalink_html', 'my_get_sample_permalink_html');
のように。
どのように書けばよいでしょうか?

オリジナルの get_sample_permalink_html :
https://github.com/WordPress/wordpress-develop/blob/5.9/src/wp-admin/includes/post.php#L1469-L1543

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

PHP

1add_filter( 'get_sample_permalink_html', function( $return, $post_ID, $new_title, $new_slug, $post ){ 2 $my_encoded_domain = 'xn--u9jxfoe1dzd3589ao4bi76dgz5a.com'; 3 $my_decoded_domain = '私の日本語ドメイン.com'; 4 return str_replace( $my_encoded_domain, $my_decoded_domain, $return ); 5}, 10, 5 ); 6

投稿2022/03/07 03:46

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakiwai

2022/03/08 05:19

なるほど。ありがとうございます。 これでクラシクエディターの方は表示されるようになりましたが、ブロックエディターでは表示されなかったので、Admin CSS プラグインを入れて、 CSSで置換表示されるようにしてみました。 /* Enter Your Custom Admin CSS Here */ /* クラシックエディター */ span#sample-permalink { font-size: 0; } span#sample-permalink:before { content: 'https://私の日本語ドメイン.com/'; font-size: 13px; } #editable-post-name { font-size: 13px; } .post-type-post #editable-post-name:after { content: '.htm'; font-size: 13px; } /* ブロックエディター */ .edit-post-post-link__link-prefix:before { content: 'https://私の日本語ドメイン.com/'; font-size: 13px; } .edit-post-post-link__link-prefix { font-size: 0; } .components-site-home:after { content: '私の日本語ドメイン.com'; font-size: 13px; } .components-site-home { font-size: 0!important; } ---------------------- ブロックエディターの方はまだ不完全です。
退会済みユーザー

退会済みユーザー

2022/03/08 11:09

wp-admin/includes/post.phpのファイルを書き変えてGutenbergでドメインの置換は出来たんかね? そもそもあんたの質問はフィルターフックの使い方やろ。 >ブロックエディターでは表示されなかった 知らんがな そもそもの質問とズレとる
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問