[WordPress] 外掛分享: ACF Post-2-Post

首頁外掛目錄 › ACF Post-2-Post
3,000+
安裝啟用
★★★★★
5/5 分(39 則評價)
252 天前
最後更新
問題解決
WordPress 4.0+ v1.7.0 上架:2017-01-01

內容簡介

這是 Advanced Custom Fields (ACF) 的插件附加程式,要求版本至少為 5。

此插件不適用於 ACF 版本 4。

如果未安裝 ACF >= 5,此插件將不提供任何功能。***

此插件不會創建新的欄位類型或任何管理介面。當使用下述
所述時,此插件可以使現有的 ACF 關聯和文章物件欄位雙向工作,
自動更新關聯的另一端的關聯欄位。

有關詳細信息,請參閱其他說明

Github 存儲庫

此插件還可在 GitHub 上找到
https://github.com/Hube2/acf-post2post

使用方式

創建關聯或文章物件欄位。
該欄位必須在最上層。它不能是重複器或靈活內容欄位的子欄位。
所有文章上的欄位名稱必須相同。換句話說,如果您想使不同的文章類型相關聯,則必須在兩個文章類型上添加具有相同欄位名稱的欄位。

當您將文章添加到關聯或文章物件欄位中,並且在關聯的文章中出現相同的欄位名稱時,與編輯的文章建立關聯的關聯欄位將自動更新。

如果從關聯中刪除文章,則也會更新要編輯的文章的關聯。

文章物件欄位

如果正在使用文章物件欄位

如果它允許多個值,則將以與關聯欄位相同的方式工作。
如果它不允許多個值且關聯文章已包含一個值,請參見重寫設置。

重寫設置

如果相關文章中的欄位,無論它是只允許1個值的文章物件欄位,還是具有最大關聯文章數量的關聯欄位,如果相關文章中的欄位已經有最大數目的值,則默認情况下不會添加新值。 您可以通過指定重寫設置來覆蓋此默認設置。

如何添加重寫設置

add_filter('acf-post2post/overwrite-settings', 'my_overwrite_settings');
function my_overwrite_settings($settings) {
$settings['field_name'] = array(
'overwrite' => true,
'type' => 'first'
);
return $settings;
}

$settings 數組的每個元素都是一個數組。數組的索引是要指定設置的欄位。每個欄位可以有2個引數。

overwrite:true/false 或 1/0。如果設置為 true 或 1,則新值將覆蓋舊值。此設置的默認值為 false。
type:‘first’ 或 ‘last’。應刪除現有值中的哪一個,添加第一個還是最後一個。默認值為‘first’。

從現有列表中刪除值後,新值將添加到列表末尾。

欄位例外

您可以使用篩選器禁用特定欄位鍵的自動雙向關聯

// field_XXXXXXXX= 您要禁用雙向關聯的欄位鍵
add_filter('acf/post2post/update_relationships/key=field_XXXXXXXX', '__return_false');

更新後鉤子

在更新文章並傳遞單個文章 ID 後,可以使用兩個動作。請確認您查看微妙的差異

外掛標籤

開發者團隊

⬇ 下載最新版 (v1.7.0) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「ACF Post-2-Post」→ 直接安裝(推薦)
📦 歷史版本下載

原文外掛簡介

This is an add on plugin for Advanced Custom Fields (ACF) >= Version 5.
This plugin will not work with ACF Version 4.
This plugin will not provide any functionality if ACF >=5 is not installed.***
This plugin does not create a new type of field or any admin interface. This plugin when used as
explained below makes the existing ACF Relationship and Post Object fields work bi-directionaly,
automatically updating the relationship field on the other end of the relationship.
For more information see Other Notes
Github Repository
This plugin is also on GitHub
https://github.com/Hube2/acf-post2post
How To Use

Create a relationship or post object field.
The field must be at the top level. It cannot be a subfield of a repeater or a flexible content field.
The field name must be the same on all posts. In other words if you want to have different post types be related then you must add a field with the same field name on both post types.

When you add a post to a relationship or post object field and the same field name appears on the post added to the relationship then the relationship field on the related post will be updated to include a relationship to the post being edited.
If a post is removed from a relationship then the post being removed will also be updated to remove the relationship to the post being edited.
Post Object Fields
If a post object field is being used

If it allows multiple values then it will work the same way that relationship fields work.
If it does not allow multiple values and the related post already contains a value see Overwrite Settings

Overwrite Settings
If the field in a related post, whether it is a post object field that only allows 1 value or a relationship field that has a maximum number of related posts, if the field in the related post already has the maximum number of values allowed, by default, a new value will not be added. You can override this default by specifying overwrite settings.
How to add overwrite settings
add_filter('acf-post2post/overwrite-settings', 'my_overwrite_settings');
function my_overwrite_settings($settings) {
$settings['field_name'] = array(
'overwrite' => true,
'type' => 'first'
);
return $settings;
}

Each element of the $settings array is an array. The index of the array is the field that you want to specify settings for. Each field can have 2 arguments.

overwrite: true/false or 1/0. If set to true or 1 then new values will overwrite older values. The default value of this setting is false.
type: ‘first’ or ‘last’. Which of the existing values should be removed, the first one added or the last. The default value is ‘first’.

after a value is removed from the existing list the new value is added to the end of the list.
Field Exeptions
You can disable automatic bidirectional relationships for specific field keys using the filter
// field_XXXXXXXX = the field key of the field
// you want to disable bidirectional relationships for
add_filter('acf/post2post/update_relationships/key=field_XXXXXXXX', '__return_false');

After update hooks
There are two actions that can be used after a post is updated and passes a single post ID. Please make sure you see the subtle difference in these two hooks.
The first is run after each related post is updated
add_action('acf/post2post/relationship_updated', 'my_post_updated_action');
function my_post_updated_action($post_id) {
// $post_id == the post ID that was updated
// do something after the related post is updated
}

The second is run after all posts are updated and passes an array of post IDs.
add_action('acf/post2post/relationships_updated', 'my_post_updated_action');
function my_post_updated_action($posts) {
// $posts == and array of post IDs that were updated
// do something to all posts after update
foreach ($posts as $post_id) {
// do something to post
}
}

延伸相關外掛

文章
Filter
Apply Filters
Mastodon