人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

それを出力するのに

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

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

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

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

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

教えてください。

●質問者: hashimajc
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● rouge_2008
●50ポイント

テキストウィジェットは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の機能は次の通りです(ここ重要)。


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

「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のマーキー系プロパティで指定すると良いでしょう。


2 ● pretaroe
●50ポイント

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

<?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を使用せずに
まず、テキスト文字だけおいて、それで改行されるかどうかをまずは確認すべきかと思います。

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ