49

WordPress で最初のテーマを作成していますが、さまざまなセクションにコンテンツを追加しているときに問題が発生しました。

私のHTMLはこのようなものですが、

<div id="maintext">
   <-- Text -->
</div>
<div id="products">
   <-- Text and Images -->
</div>
<div id="about_company">
   <-- Text boxes -->
</div>

WordPress エディターを介して追加されたコンテンツがそれぞれの div に該当することを確認するにはどうすればよいですか? 「メインテキスト」div の場合、ページ自体からコンテンツをロードしますが、コンテンツを他の 2 つの div に動的に追加するにはどうすればよいですか?

いくつかのフォーラムを検索したところ、多くの人がウィジェットを使用してコンテンツを追加することを提案しました。ウィジェットを使用せずにそれを行う方法はありますか?

どんな助けでも喜んでいただければ幸いです。

4

7 に答える 7

82

残念ながら、単一のページに複数の編集可能なフィールドを追加することは、WordPress 自体を使用して特に簡単ではありません.

私が知っている多くの WP 開発者 (私自身を含む) は、追加のコンテンツ フィールドについてAdvanced Custom Fields Pluginに依存しています。

これを実現する手順は次のとおりです。

1) プラグに ACF を取り付けます。
2) ACF の設定エリアで、いくつかの新しいフィールドを作成します。
3) 特定のページまたは一連のページに表示される新しいフィールドを割り当てます。
4) 指定されたページのページ テンプレートを更新して、新しいフィールドが表示されるようにします。

たとえば、標準の wysiwyg フィールドのセットを作成し、それらを「概要」ページに割り当てることができます。これらのフィールドを呼び出しましょう: main_text、products_info、about_company。フィールドが作成されてページに割り当てられると、そのページを編集するときに、追加のフィールドを編集できるようになります。

これらの新しいフィールドが訪問者に表示されるようにするには、概要ページに使用するページ テンプレートにそれらを追加する必要があります。コードは次のようになります。

<div id="maintext">
   <!-- Text -->
   <?php if(get_field('main_text')){ //if the field is not empty
        echo '<p>' . get_field('main_text') . '</p>'; //display it
    } ?>
</div>
<div id="products">
   <!-- Text and Images -->
   <?php if(get_field('products_info')){ //if the field is not empty
        echo '<p>' . get_field('products_info') . '</p>'; //display it
    } ?>
</div>
<div id="about_company">
   <!-- Text boxes -->
   <?php if(get_field('about_company')){ //if the field is not empty
        echo '<p>' . get_field('about_company') . '</p>'; //display it
    } ?>
</div>

ここには良い例がたくさんあります。プラグインをインストールするのではなく、テーマに直接ACF を含めることもできます。

于 2013-09-05T07:45:09.270 に答える
7

私が信じている3つのオプションがあります。

  1. テキストウィジェットにコンテンツを表示できるウィジェットエリアを作成します: http://codex.wordpress.org/Function_Reference/register_sidebar
  2. 別のページのコンテンツを取得するテンプレートを作成します: http://codex.wordpress.org/Page_Templates#File_Folders
  3. すべてのページに新しいメタ ボックスを作成します: http://codex.wordpress.org/Function_Reference/add_meta_box

あなたが探しているのはオプション 2 だと思います。その他のオプションは、すべてのページに余分なコンテンツを表示したい場合は、よりフルサイト指向です。

于 2013-09-05T07:36:10.703 に答える
1
<div id="maintext">
   <?php the_content(); ?>
</div>
<div id="products">
   <?php // echo wp function to get product data; ?>
</div>
<div id="about_company">
   <?php // echo wp function to get about companydata; ?>
</div>
于 2013-09-05T09:25:44.677 に答える
0

私はこの問題に何度か遭遇しました。質問は 3 年前のものですが、まだかなり最新のものだと思います。複数のコンテンツ ブロック プラグインを使用することに成功したことがあります。

https://ltz.wordpress.org/plugins/multiple-content-blocks/

the_blockプラグインをインストールしたら、テンプレートに含めることができます:

<div id="maintext">
   <?php the_content(); ?>
</div>
<div id="products">
   <?php the_block('products') ?>
</div>
<div id="about_company">
   <?php the_block('company') ?>
</div>
于 2016-05-24T20:34:47.887 に答える
0

こんにちは、現在、その設定でテーマを開発しています。これを実現するには、次の 2 つの方法があります。

ウィジェット化および固定された管理パネル (カスタマイザー オプション)

ウィジェットがウィジェットセクションを含む.phpファイルを作成する場合、テーマで2つを使用していますそのセクションのウィジェットを作成します

管理パネルで修正した場合は、functions.php に .php セクションを含める必要があります。

edit * ウィジェット化の利点は、通常のサイドバーと同じように配置できることです

于 2018-10-27T15:06:43.267 に答える