web-dev-qa-db-ja.com

ショートコードなしでページにコンテンツを追加する

私が取り組んでいるサイトには、テキスト画像の組み合わせ、スライダー、コンテンツのリストなど、さまざまなコンテンツ要素を入力する必要があるページがいくつかあります。など。すべてのコンテンツブロックは、コンテンツ(投稿またはカスタム投稿タイプ)またはコンテンツのリストになります。

私が理解していることから、私は2つの選択肢があります。

  1. 複雑なプラグインを使って定義済みのコンテンツをドラッグアンドドロップする
  2. ショートコードを使う

発展途上の観点から私はむしろサードパーティ製のプラグインにすべてのロジックを任せたくないです。テンプレートの制御ができなくなってしまうのでしょうか。

しかし、ショートコードはどの顧客にとっても容認できる解決策のようには思えません。実際、それらは技術的すぎるためです。

助言がありますか?ベストプラクティスはありますか?

5
sven

私はさまざまなオプションを評価し、プラグイン "Page Builder"を使いました。技術的な面はそれほどよくありませんが(たとえば、データの永続化:すべてのコンテンツがシリアル化される)、私が十分な柔軟性と快適さを得て、顧客が各ページの構造を変更できる唯一の選択肢です。

開発からステージへの移行も、シリアライゼーションのせいで苦労し、さらに別のプラグイン(デュプリケータ)でのみ可能でした。

ご協力ありがとうございます

0
sven

ショートコード自体は機能にリンクしていますが、テンプレートやメタデータと組み合わせて入力データに効果的に使用できると思います。例えば:

add_shortcode('content-box','content_box_function');
function content_box_function() {
    global $post;
    $title = get_post_meta($post->ID,'_content_box_title',true);
    $content = get_post_meta($post->ID,'_content_box_content',true);
    get_template_part('templates/content','box');
}

/ wp-content/themes / theme-slug / templates/content-box.php

<div class="content-box-container">
    <div class="content-box">
         <h3 class="content-box-title"><?php echo $title; ?></h3>
         <div class="content-box-content"><?php echo $content; ?></div>
    </div>
</div>

次に、ポストライティング画面にメタボックスを追加して、ユーザーが各コンテンツブロックのショートコードに使用しているキーに合わせてメタ値を選択/定義できるようにします。

ショートコードをコンテンツ内の任意の場所に順序付けしたり配置したりできるほか、必要に応じて他のコンテンツを配置できるという利点がありますが、事前定義済みのコンテンツブロックタイプについてはテンプレート作成(および関連するスタイル設定)は既にできます。

1
majick

あなたはページテンプレートの使用を検討することができます。この例では、連絡先ページを使用します。 "contact-page.php"

その後、テンプレートに必要なコードを書くことができます。柔軟性を保つために、カスタマイザの使い方(慣れていない場合)を探し、テンプレートページでこれを使用して、管理者にコードを見ずにページの内容を変更させます。これが私のテンプレートの作成方法です。

1
Chess Byte

これは興味深い質問ですが、Q&Aモデルには少し広すぎます。これが私がすることです:

  1. 各投稿がコンテンツのブロックであるカスタム投稿タイプを作成します。
  2. コードブロックから組み立てられたページの2番目のカスタム投稿タイプを作成します。コンテンツフィールドの代わりに、10個のドロップダウンフィールドを作成します(ページにさらにブロックがある場合はそれ以上)。ドロップダウンのselectオプションには、最初のカスタム投稿タイプのすべての投稿のタイトルを付けます。このようにして、新しいコンテンツブロックは自動的にアセンブリで利用可能になります。
  3. 2番目の投稿タイプ用のテンプレートを作成します。このテンプレートはすべてのドロップダウンフィールドをループ処理し、最初のカスタム投稿のコンテンツを組み立てます。
1
cjbj