从ACF链接字段获取帖子/页面ID

时间:2018-05-31 作者:Damian

我正在尝试使用ACF链接字段从链接接收帖子ID:

<?php 
  $link = get_sub_field(\'offer_link\');
  $id = get_the_ID();
    if( $link ): ?>
    <a href="#post-<?php echo $id; ?>" target="<?php echo $link[\'target\']; ?>"><?php echo $link[\'title\']; ?></a>
<?php endif; ?>
但我得到的不是链接ID,而是当前页面的ID。应该怎么做?

4 个回复
最合适的回答,由SO网友:relish27 整理而成

这个Page Link documentation 实际显示了如何从页面链接字段中检索ID。我只是需要自己做这件事。这对我很有效。

<?php 

// vars
$post_id = get_field(\'url\', false, false);

// check 
if( $post_id ): ?>
<a href="<?php echo get_the_permalink($post_id); ?>"><?php echo get_the_title($post_id); ?></a>
<?php endif; ?>
“false,false”参数允许您检索更多详细信息。

SO网友:Jacob Peattie

您可以使用从URL获取帖子IDurl_to_postid(). 只需将URL传递给它即可获取ID:

$link = get_sub_field( \'offer_link\' );
$id = url_to_postid( $link[\'url\'] );
但是,如果您想要一个字段,该字段将为您提供所选页面的ID,那么您应该使用关系字段。这可能会更有效率。这也意味着,如果该帖子的URL发生更改,您保存的数据不会像保存URL时那样停止工作。

SO网友:Krzysiek Dróżdż

我不认为你应该在你的案例中使用Link字段,如果你想创建与post对象的关系。。。

如果您能够选择多个帖子,或者如果可以只选择一个值,则只选择帖子对象,那么使用关系字段会更好。

如果选择Post对象字段类型,请记住将其返回格式设置为Post ID。

这边get_sub_field( \'your-field-name\' ) 将准确返回所选帖子的ID。

如果要显示此帖子的链接,可以始终使用echo get_permalink( get_sub_field( \'your-field-name\' ) );

这是修改后的代码(我已经使用了字段的原始名称,但我想也可以更改它,因为它不再包含链接):

<?php 
    $post_id = get_sub_field(\'offer_link\');
    if ( $post_id ):
?>
<a href="#post-<?php echo esc_attr($post_id); ?>"><?php echo get_post_field( \'post_title\', $post_id ); ?></a>
<?php endif; ?>

SO网友:Damian

我的作品:

<?php 

$link = get_sub_field(\'offer_link\');
$x = $link->ID;

if( $link ): ?>
<a href="#post-<?php echo $x ?>"><?php echo get_sub_field(\'offer_link_text\'); ?></a>
<?php endif; ?>
和Post对象字段。

Thaks为所有人提供帮助:)

结束

相关推荐

将php文件加载到特定的页面ID

我正在尝试将一个php文件分配给一个特定的页面?我有modals存储在不同的文件中,希望在调用指定页面时加载它们。这些页面使用相同的主题;投资组合;。如果我这样做:<?php $id="page-id-8229"; include \'/modals/work/cplfModals.php\';?> 对于公文包模板中的每个文件,每个页面仍将加载所有分配的modal,而不仅仅是我尝试分配给该页面的modal。有没有办法试试这个functions.php?编辑:很抱歉我