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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

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

PHP

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

Q&A

1回答

965閲覧

WordPressのメニューのテキストを改行したい

kouji_piano

総合スコア13

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/03/13 09:59

前提・実現したいこと

wordpressでメニューのテキストの中に|(パイプ)が入っていたら、
それを<br>に置き換えますよ、というようにしたいです。

発生している問題・エラーメッセージ

下記のサイトのとおりにソースを書き換えたら、メニュー自体がきえてしまいました。
https://deep-space.blue/web/397

該当のソースコード

ファイル名:\wp-includes\nav-menu-template.php

‘echo’ => false,
echo str_replace(‘|’, ‘<br>’, $memu);

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

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

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

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

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

CHERRY

2019/03/13 10:18

どこをどのように書き換えたのでしょうか? WordPress core(本体)のファイルを直接書き換えていないですよね?
kouji_piano

2019/03/13 10:31

\wp-includes\nav-menu-template.php のファイルを以下に書き換えました。 $defaults = array( 'menu' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'menu_class' => 'menu', 'menu_id' => '', 'echo' => false, ←←ここをtrueからfalseにしました。 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', 'item_spacing' => 'preserve', 'depth' => 0, 'walker' => '', 'theme_location' => '', ); echo str_replace(‘|’, ‘<br>’, $memu); ←この文字列を追記しました。
kei344

2019/03/13 10:43

使用されているテーマは自作テーマでしょうか?それとも公開されているテーマでしょうか?後者の場合は入手先をリンクつきで「質問文に」追記してください。
guest

回答1

0

\wp-includes\nav-menu-template.php
のファイルを以下に書き換えました。

WordPress core(本体)のファイルは書き換えなくても、HOOK で処理を変更できるようになっている部分が多くあります。
今回の内容では HOOK が利用できるので書き換える必要はありません。

また、WordPress 本体を書き換えると WordPress のアップデートで書き換えた部分が元に戻るので、自動アップデートされた場合に原因不明の不具合が発生する原因になります。


今回、プログラムを直接書き換えたことによって、表示が消えた理由ですが、'echo' を false にしたからです。

この関数は、引数で表示/値で返すを切り替えできるようになっていて、 echo が、true だと関数の位置に表示。false だと画面に表示しないで、変数等に代入できるように文字列が返ってきます。


WordPress 的に推奨される方法としては、お使いのテーマの functions.php の中で、HOOK を使って置き換える方法です。

WordPress 4.x 以降には、wp_nav_menu の出力直前に出力内容を書き換えできる wp_nav_menu HOOK が用意されていますので、これを使ってください。

例:

function my_wp_nav_menu_179217 ( $output, $args ){ return str_replace( '|', '<br>', $output ); } add_filter( 'wp_nav_menu', 'my_wp_nav_menu_179217', 10, 2 );

この HOOK は、WordPress Codex 日本語版には記載がないので、英語版のドキュメント Hooks / wp_nav_menu - Code Reference 参照してください。

投稿2019/03/13 11:00

編集2019/03/13 11:14
CHERRY

総合スコア25171

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

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

kouji_piano

2019/03/13 13:54

できました! できるかどうかなんですが、これをスマホでは無効にすることってできますか?
kouji_piano

2019/03/13 22:40

このソースで改行は対応するようになったのですが、管理ページでエラーがおきるようになってしまいました。 ■書いたコード if( !wp_is_mobile() ) { //PCの場合 function my_wp_nav_menu_179217 ( $output, $args ){ return str_replace( '|', '<br>', $output );   } add_filter( 'wp_nav_menu', 'my_wp_nav_menu_179217', 10, 2 ); } else { //モバイル・タブレットの場合 function my_wp_nav_menu_179217 ( $output, $args ){ return str_replace( '|', '', $output ); } add_filter( 'wp_nav_menu', 'my_wp_nav_menu_179217', 10, 2 ); } ■出たエラー Parse error: syntax error, unexpected '}' in /home/asobinomori/www/playpark/wp-content/themes/kids/functions.php on line 662
dit.

2019/03/14 00:11

横から失礼します。PCの場合のadd_filterの前の}の所に全角スペースが入っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問