Как сделать ссылку на ACF Relationship "parent" - PullRequest
0 голосов
/ 02 июля 2018

Я использую Расширенные пользовательские поля в Wordpress, чтобы иметь возможность связывать контент друг с другом. Это сценарий:

• Установить связь между типом записи «дизайн» и типом записи «элемент»

• На всех страницах «дизайна» я хотел бы показать все «элементы» из всех дизайнов.

• Когда я нажимаю на один из этих «предметов», мне нравится переходить на URL «дизайна», связанного с этим конкретным предметом.

Вот как это выглядит сейчас:

 <?php $items = get_field('items'); ?>
 <?php foreach( $items as $item ): ?>
                            <?php setup_postdata($item); ?>


                            <?php 


                    $design = get_posts(array(
                        'post_type' => 'design',
                        'meta_query' => array(
                            array(
                                'key' => 'items', // name of custom field
                                'value' => '"' . $item->ID. '"',
                                'compare' => 'LIKE'
                            )
                        )
                    ));

                    ?>                      

<a href="<?php echo get_permalink( $design->ID ); ?>" target="blank">Link to "Design"</a>
<?php endforeach; ?>

Я думал, что это получит URL-адрес связанного типа поста "Дизайн", но все, что я получу, это URL-адрес текущей страницы.

Кто-нибудь знает, что я делаю не так?

EDIT: В учебнике ACF Relationship есть пример, подобный следующему:

 $design = get_posts(array(
                        'post_type' => 'design',
                        'meta_query' => array(
                            array(
                                'key' => 'items', // name of custom field
                                'value' => '"' . get_the_ID() . '"', // matches exactly "123", not just 123. This prevents a match for "1234"
                                'compare' => 'LIKE'
                            )
                        )
                    ));

                    ?>
                    <?php if( $design ): ?>
                        <ul>
                        <?php foreach( $doctors as $doctor ): ?>

Но вместо get_the_ID () мне сначала нужно получить идентификатор каждого элемента, а затем найти дизайн, включающий этот элемент. Что мне нужно изменить из учебного кода?

1 Ответ

0 голосов
/ 07 августа 2018

Тебе нужно увидеть ...

https://www.advancedcustomfields.com/resources/relationship/

а это для получения "чайлдс" https://www.advancedcustomfields.com/resources/querying-relationship-fields/

для получения идентификатора

https://wordpress.stackexchange.com/questions/58943/convert-post-name-into-post-id

может быть, нужно это

заменить get_the_ID на $ post-> ID в этой части .. 'value' => '"'. get_the_ID (). '"',

$post = get_page_by_title( 'your-slug', OBJECT, 'your-post-type' );
echo $post->ID;

примечание

-Не забудьте обновить свой пост

...