ワードプレスでウィジットエリアのテキスト本文をフリースペースとして利用したいと考えました。


それを出力するのに

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
<?php endif; ?>

とすれば、出力されます。これをmarqueeタグで右から左へスクロールさせたいのですが、なぜか改行されてしまいます。

いろいろ調べていたのですが、

<? echo get_option( 'widget_text' ); ?> 

というプログラムですとarrayとでてしまい、
どうすればいいかわかりません。

教えてください。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/01/22 12:58:15
  • 終了:2013/01/29 13:00:04

回答(2件)

id:rouge_2008 No.1

rouge_2008回答回数594ベストアンサー獲得回数3512013/01/22 13:44:30

ポイント50pt

テキストウィジェットはHTMLを記述できますので、ウィジェットの設定画面でテキストウィジェット内に直接marqueeタグを記述してはいかがでしょうか?

なお、「dynamic_sidebar()」は、サイドバー(ウィジェットエリア)の名前またはIDを引数として渡すと、そのサイドバー(ウィジェットエリア)を表示します。

『関数リファレンス/dynamic sidebar』
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/dynamic_sidebar

Usage

<?php dynamic_sidebar( $number ); ?>

Parameters

$number
(int/string) (optional) Name or ID of dynamic sidebar.
初期値: 1



『WordPress 3のサイドバーにウィジェットを表示するカスタマイズ』
http://www.koikikukan.com/archives/2010/12/08-015555.php

<?php if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ?>
…略…
<?php endif; ?>

追加した行にある関数dynamic_sidebarの機能は次の通りです(ここ重要)。

  • 「primary-widget-area」というウィジェットエリアにウィジェットが設定されていれば、括っている内容の代わりに、そのウィジェットを表示する。
  • 「primary-widget-area」というウィジェットエリアにウィジェットが設定されていなければ、括っている内容をそのまま表示する。


[------- ここをちょっと追加 -------]

「dynamic_sidebar()」という風に固有の名前またはIDを指定しないで実行すると、登録済みのサイドバー(ウィジェットエリア)のウィジェットがすべて表示されてしまいます。
ウィジェットエリアが1個だけで、それにテキストウィジェットを1個だけ表示するという使い方はあまりしないと思いますし、現在はその状態でも今後困る事もあるかと思います。
「dynamic_sidebar('sideber-1')」などのように固有の名前またはIDを指定して目的のウィジェットエリアを表示し、marqueeで動かしたいテキスト本文は、テキストウィジェットの中にテキストをHTMLごと直接記述して、表示はCSSで調整した方がいいと思います。

[------- ここまで -----------------]


※サイドバー(ウィジェットエリア)の登録には、「register_sidebar」を使用します。
※以下は上記参考記事より

4.ウィジェットエリアの定義(自前で作りたい場合)

自前でウィジェットエリアの定義を作るには、自分のテーマディレクトリ配下に空のfunction.phpを作り、次の内容を設定してください。ここでは当ブログで定義しているもの(ほとんどfunction.phpの流用ですが)からウィジェットに関連する部分のみをそのまま掲載しておきます。

<?php
function koikikukan_widgets_init() {
    register_sidebar( array(
        'name' => __( 'Primary Widget Area', 'koikikukan3' ),
        'id' => 'primary-widget-area',
        'description' => __( 'The primary widget area', 'koikikukan3' ),
        'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
        'after_widget' => '</li>',
        'before_title' => '<h2 class="widget-title">',
        'after_title' => '</h2>',
    ) );
/* ~(略)~ */
}
add_action( 'widgets_init', 'koikikukan_widgets_init' );

一番下にあるadd_actionで、ウィジェット管理画面を初期化するフック(widgets_init)を定義し、関数koikikukan_widgets_initを起動します。

add_action( 'widgets_init', 'koikikukan_widgets_init' );


※もし自分でサイドバーを登録する必要がありましたら、上記参考記事の最後まで読んでみてください。


『関数リファレンス/register sidebar』
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_sidebar

『関数リファレンス/register sidebars』
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_sidebars


参考情報になりますが、HTML5ではmarqueeは廃止予定だそうです。
最近はHTML5で作成するサイトが増えているようですし、marqueeではなくCSS3を利用した方がいいように思います。

『 - HTMLタグリファレンス』
http://www.htmq.com/html/marquee.shtml

■HTML5情報
HTML5では、は廃止される予定です。 同様の機能を実現するには、 CSS3のマーキー系プロパティで指定すると良いでしょう。

id:pretaroe No.2

pretaroe回答回数531ベストアンサー獲得回数752013/01/23 01:55:19

ポイント50pt

単にウィジットエリアのスペースの横幅が足りずに改行されてるとかだと思いますが・・・。

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
<?php endif; ?>

でも問題ないかと思います。

これを
<div style="width:600px;">
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
<?php endif; ?>
</div>

などのようにすればよいかと思います。

marqueeを使用せずに
まず、テキスト文字だけおいて、それで改行されるかどうかをまずは確認すべきかと思います。

※<>は全角で書いてますので、注意してください。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません