私はすでに 投稿した というトピックから続けていますが、角度は異なります。できるだけ多くの情報を提供しようとしているので私と一緒に裸でください。
私のサイトの一部で、 "Quick Facts"と呼ばれる簡単なテキスト領域をたくさんの動物/ cryptid ページに追加しようと思っています。これは各動物の事実と数字のリストを提供します。
これを設定するために私が取ったステップはここにあります:
結局次のようになります。
もちろん、このサイドバーはすべてのページに同じテキストデータを繰り返します。代わりに各動物のページに固有のデータを表示する必要があります。
私はこれらの動物の事実ページを100+個持っていくので、この問題にどう取り組むのが最善かと思います。これが私が集めた選択肢とそれぞれがどんな問題を提示するかです。私は新しいWeb開発者なので、プロのサイトがこの問題にどう取り組むかを知りたいです。
サイドバーを登録して新しいページごとにサイドバー-___。phpを作成します。 _私はfunctions.phpに戻って各クリーチャーに100以上の異なるサイドバーを登録し続けることができます。そこから私はsidebar-creaturename.phpと呼ばれる個々のphpページを作り、カスタムフィールドを使って同じテンプレートからそれらを呼び出すことができます。
<?php $sidebar = get_post_meta($post->ID, "sidebar", true); get_sidebar($sidebar); ?>
私の最後のトピックであるUser Willが、このコードを自分のページテンプレートまたは作成するサイドバーに入れることについて説明しました。そしてカスタムフィールドのアイデアを私に紹介しました。
<?php
var $meta = get_post_meta($post->id, "your-key", true);
if(!empty($meta)):
?>
<aside>
<?php echo $meta; ?>
</aside>
<?php endif; ?>
問題は...私はこれを追加しました、そしてそれはちょっと私のページを引き裂いた。そのため、間違った場所に追加したのか、足りないのかはわかりませんでした。誰もがこれについて拡張することができればそれは高く評価されるでしょう。私は私のcryptofact-page.phpテンプレートと私が使用するであろう潜在的なサイドバーを示すコードをこの記事の最後に追加します。
ウィジェットロジックプラグイン(または同様のプラグイン)の使用:私が自分のファイルをコーディングしてこれを行うことができると思えば、プラグインを使用することはあまり好きではありません。これは私の問題を調査したときに私が見つけた提案です。つまり、このプラグインは他の各ウィジェットに追加のフィールドを追加して、その特定のウィジェットをどのページに表示するかを指定できます。
左側のサイドバーを完全に取り除きます。私はそれについて考えていましたし、左側のサイドバーを完全に取り除き、各動物のpageをWordpressで書いている間に、動物のmain content divの左に浮かぶquickfact divを追加します。これが私が最初にこれらのAnimal Factoid Pagesについて考えたときの最初のアイデアでしたが、列の追加などのさまざまなチュートリアルを研究するときには、代わりに左側のサイドバーを追加することをお勧めしました。それは私がウィジェットやサイドバーを扱う必要がないことを意味し、すべての「簡単な事実」は他のコンテンツと同じ入力領域に入ります。それはただもっと多くのdivを扱うことを意味しています(サイドバーで多くのものを扱っているので問題にはなりません)。
繰り返しますが、100ページ以上の動物ページでこれを実行するための最も効率的な方法は何だろうか。大規模なWebサイトでこれに対処するための最も一般的な方法は何ですか?
Wordpressは私にとってかなり新しいもので、昨日カスタムフィールドのアイデアが私に提示されたばかりなので、例1はカスタムフィールドについて本当に私が知っているすべてです。
私はこれを行うための他の方法を探しています、そして私はこれを正しくすることを学ぶために時間をかけて喜んでいます。これが簡単だとは思わない。非常に多くのページがあるのでそれは退屈になるでしょうが、私はただこれについて取り組むために超無関係な方法を取っているばかのように思われたくありません。
私のcryptofact-page.phpテンプレート:
get_header(); ?>
<div class="cryptid-sidebar-left">
<ul class="cryptid-sidebar-widgets-left">
<?php if ( is_active_sidebar( 'cryptid-sidebar-widgets-left' ) ) :
dynamic_sidebar( 'cryptid-sidebar-widgets-left' ); endif; ?>
</ul>
</div>
<?php if ( have_posts() ) : ?>
<!--if there are posts, start the loop-->
<div class="cryptid-container">
<?php while ( have_posts() ) : the_post(); ?>
<!--get the content template for the current post format.-->
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
</div> <!-- .cryptid-container-->
<?php else : ?>
<!--If no content, get content template for 'no posts found'-->
<div class="cryptid-container">
<?php get_template_part( 'content', 'none' ); ?>
</div>
<?php endif; ?>
<div class="cryptid-sidebar-right">
<ul class="cryptid-sidebar-widgets">
<?php if ( is_active_sidebar( 'cryptid-sidebar-widgets' ) ) :
dynamic_sidebar( 'cryptid-sidebar-widgets' );
endif; ?>
</ul>
</div>
<?php get_footer();
?>
私のサイドバー:現在、私は別のサイドバー-____。phpファイルを用意する必要はありません。それはfunctions.phpに登録してそれをテンプレートの中で呼び出すだけでうまくいくようです。しかし、私がそれを持っていた(またはこれを必要としていた)場合、おそらく次のようになります。
<?php
/**
* Displays sidebar widgets for front page
*
* @since ctheme 1.0
*/
?>
<div class="cryptid-sidebar-left">
<ul class="cryptid-sidebar-widgets-left">
<?php if ( is_active_sidebar( 'cryptid-sidebar-widgets-left' ) ) :
dynamic_sidebar( 'cryptid-sidebar-widgets-left' );
endif; ?>
</ul>
</div>
あなたのすべての助けとこれを読むために時間を割いてくれてありがとう。十分な情報を提供していただければ幸いです。
編集 - 潜在的な回答:
それで私は再びカスタムフィールドを読み始め、またMeta Boxをfunctions.phpにコーディングし始めました。私は休憩を取り、そして上記のExample#2:Text Widget and Widget Logic Pluginに由来する簡単な解決策があることに気づきました。私はまだもっと洗練された方法でこの問題に取り組みたいと思っています、しかし私が欲しいものが起こるようにするために私がしたことをここにポストするつもりです。
#2の唯一の本当の問題は、私が見たのはCryptid左サイドバーの下のCustomizer- Widget領域を調べに行ったときに、これだけだったことです。
テキストウィジェット:簡単な事実
テキストウィジェット:簡単な事実
テキストウィジェット:簡単な事実(および上)
上で述べたように、もし私がこれらのクリーチャーのうちの1つのためにテキストデータを変更するために戻って行かなければならなかったならば、私は一目でどちらに入るべきかわからないでしょう。だから、私は単に別のウィジェットを探しに行きました。他のいくつかのテキストウィジェットを試した後、私はEnhanced Text Widgetを選びました。このウィジェットは私にウィジェットにタイトルを付けるが出力にタイトルを表示しないオプションを与えました。
私はこの生き物の名前でウィジェットのタイトルを付けました。それからテキストフィールドで、私は簡単な事実のために私がコード化した他のすべてのデータの上に単に "Quick Facts"というタイトルをウィジェットに与えました。私はそれから、そのタイトルに、他のウィジェットのタイトルと同じdivを与えました。私の場合、それは "widgettitle"と呼ばれました。
<div class="widgettitle"><h2>Quick Facts</h2></div>
それはちょっとフォントのサイズをめちゃくちゃにしました、しかし、スタイリングの残りはそこにあります。 style.cssファイルで簡単に修正できます。
それから、ウィジェットロジックを使用しました。これは、各ウィジェットの下部に追加のフィールドを追加するものです。そのため、この領域に次のように入力すると、そのページにのみ表示されます。
is_page('pageid')
最後に、ウィジェットのカスタマイズ領域があります。この領域は次のようになります。
強化テキスト:ネス湖
強化されたテキスト:Ogopogo
強化テキスト:ビッグフット(およびそれ以降)
それぞれが内部に独自の素早い事実を持っているので、今ではどのクリーチャーのウィジェットが以前のものに対して対比されているのかをすぐに確認できます。
私はもっと洗練された道をたどるべきであるように、このようにそれをするのはちょっと大変な気がしますが、それはうまくいき、それはかなりきれいに見えます。サイトがこのx100をどの程度うまく処理できるかはわかりませんが、処理がそれほど難しい、または重くなるようには思われません。
また、私はただ気付いたことがあります...クイックファクト領域の上の各動物の場所のための小さな地図が欲しいなら(画像に見られるように)私は同様のことをしなければなりません。私はそれにも取り組まなければならないでしょう...しかし私は代わりにページの内容の代わりに地図を貼り付けるかもしれません。これは、詰め込まれたサイドバーの1つになります。
さらなる助けは大歓迎です!
最終編集と解決策 _ Miloに感謝します!
以下にMiloが受け入れた答えを取って、私はカスタムフィールドを完全に実装することにしました。私は自分自身のメタボックスを作成するという問題を経験しましたが、それはかなりまともに出てきました。私は Advanced Custom Fields plugin に戻ってしまったので、彼らのメタボックスはもっと良かったです。私もプラグインを必要としませんが、将来もっと複雑なものに使用したい場合に備えて、私はそれを保ちました。 高度なカスタムフィールドプラグインの使用 (またはプラグインなしのカスタムフィールドボックス)カスタムフィールドキーcryptid_post_classを作成しました。
その後、サイドバーを削除するようにページテンプレート(cryptofacts-page.php)を変更し、その代わりにカスタムフィールドからデータを取得します。それは以前からサイドバーで表示されるように適切なラッパーを使用することが不可欠です(Miloisawesome)。
get_header(); ?>
<div class="cryptid-sidebar-left">
<ul class="cryptid-sidebar-widgets-left">
<?php
$meta = get_post_meta(get_the_ID(), "cryptid_post_class", true);
if( !empty($meta) ):
?>
<li>
<?php echo $meta; ?>
</li>
<?php
endif;
?>
</ul>
</div>
<?php if ( have_posts() ) : ?>
<!--if there are posts, start the loop-->
<div class="cryptid-container">
<?php while ( have_posts() ) : the_post(); ?>
<!--get the content template for the current post format.-->
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
これがプロセスを説明するための写真です。
3. これで遊んでいる間はバックアップテンプレートを使用していたので、最終結果からいくつかのcss調整を引いたものです
うまくいけば、これは他の初心者のWordPress開発者が物事をより明確にし、WPのかなり素晴らしいカスタムフィールドの一部に近づくのを助けるでしょう!
couldサイドバーを動的に登録します。サイドバーを登録すると、すべての動物のページを照会し、すべてのページをループし、各ページに一意のサイドバーを登録できます。ページを追加すると、そのためのサイドバーが自動的に作成されます。
ただし、-それはたくさんのサイドバーです。ページコンテンツと密接に結び付けられたものについては、事前定義されたフィールドを含む カスタムメタボックス を介してカスタムフィールドで処理します。
ポストメタの使用がサイトのレイアウトを妨害した理由については、おそらくマークアップ/スタイリングの問題にすぎません。最も簡単な方法は、サイドバーとテキストウィジェットでレイアウトを正しく表示し、ページを表示するときに生成されたマークアップをコピーし、それをカスタムフィールドのラッパーマークアップとして使用することです。上記のテンプレートを見ると、ウィジェットは<li>
内で<ul>
sとして表示されるので、投稿メタを追加するときにそれを試してください。
<div class="cryptid-sidebar-left">
<ul class="cryptid-sidebar-widgets-left">
<?php
$meta = get_post_meta(get_the_ID(), "your-key", true);
if( !empty($meta) ):
?>
<li>
<?php echo $meta; ?>
</li>
<?php
endif;
?>
</ul>
</div>
私はあなたが言及されているもののようにたくさん聞こえる問題のあるサイトを持っていました。プラグインの "カスタムサイドバー"を使用しました。特定のページにサイドバーを作成し、設定されていない場合はデフォルトでサイドバーを作成することができます。これはあなたが探しているものですか?