web-dev-qa-db-ja.com

ページの親のIDを取得してオーディオプレイリストを作成する

そのため、投稿が更新されると、サイトは自動的にページを作成します。このページにオーディオプレイリストを含めます。だから私がしているのは、ショートコードを追加することです:[playlist]。その後、オーディオファイルがページに添付されると、プレイリストが自動的に生成されます。

このメソッドが指定されたIDで機能することを確認できます。

問題はです。3つの異なるページが作成され、3つのページすべてに音声を添付する必要があります。だから私の解決策は私が別のページを作り、そのページの子としてオーディオファイルをセットし、そして新しいページの元の3ページの子を作ることです。それから私は[playlist]というショートコードを使うことができますが、親ページからIDを取得するようにそれに伝えます。

例:

[playlist id="<?php get_parent_id ?>"]

あるいはこんな感じ。

問題は、私が親のIDを取得できないことです。私は複数の異なるコード行を試しましたが、うまくいきません。プレイリストは、デフォルトの0 IDを取得するだけです。これは、id=""が空白のままの場合に使用されます。

これはすべて私のテーマのディレクトリにあるfunctions.phpファイルに入ります。

-

これを行うにはもっと良い方法があるかもしれません。そのため、直接の親IDしか取得できないのであれば、これが最も簡単な解決策のように思えます。それは存在しなければなりません。

1

これが私の解決策です:

カタログは私の投稿のカスタムフィールドです。

カタログ番号だけで「ダミー」ページを作成し、このページにMP3を添付します。

$catalogue = get_field('catalogue');
$parent_id = get_page_by_title(strtolower($catalogue));  
$direct_id = $parent_id->ID;
$promo_page_content = [playlist id=" . $direct_id . '"]';

私はこれがこれを書くための最善の方法ではない可能性が最も高いことを認識しています。私はPHPが初めてです。しかし今のところ、これはそれをまとめるでしょう。これが他の誰かが同じ問題を抱えているのに役立つことを願っています。

0

次の機能を試してみました:

<?php get_post_ancestors( $post-ID ) ?>

返された配列の最後のポストは、最上位の祖先になるはずです。

これはコーデックスからです。

0
Svartbaard