php 如何在wordpress循环参数中将自定义字段值传入数组?

kd3sttzy  于 2023-02-07  发布在  PHP
关注(0)|答案(1)|浏览(119)

有一个自定义文本字段,提示用户输入要在侧边栏中显示的页面ID。我正在寻找一种方法,将自定义字段中输入的那些数字作为数组传递到"post__in"参数中。
目前代码:

<?php $pageid = get_post_meta(get_the_ID(),'key', true);

    $args = array(
    'post_type'      => 'page', 
    'post__in'    => array($pageid)
 );
 
 
$childrens = new WP_Query($args);
 
if ($childrens->have_posts()) : ?>
 <div class="sidebar-post-container">
    <?php while ($childrens->have_posts()) : $childrens->the_post();?>
 
        <div class="staff-thumbnail" id="staff-<?php the_ID(); ?>">
            <figure id="attachement_<?php the_ID();?>">
  <?php the_post_thumbnail(array(200,200,true),array('loading' => 'lazy', "alt"=> '', 'aria-hidden'=> 'true', 'tabindex' =>"-1"));?></figure>
 
            <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
 
        </div>
 
    <?php endwhile; ?>
</div>
<?php endif; wp_reset_query(); ?>

这只返回一个页面的第一个数字(ID)输入。我们如何传递这些值,使它返回的网页,他们的ID?

bsxbgnwa

bsxbgnwa1#

您的post_meta返回一个字符串,而array($pageid)只创建了一个包含单个元素的数组。您需要使用explode(...)将字符串转换为数组。我建议指导用户使用逗号分隔id,例如1,2,3,4,5。然后使用以下命令应该可以工作:

'post__in' => explode(',', $pageid)

我还推荐几个调整:

  • 把你的 meta键的键改为更相关的,我通常在任何与我正在做的项目相关的自定义元的开头添加2/3个字符,比如ss_
  • 使$pageid成为$pageIds的复数。
  • explodetrim结合使用,以确保用户不输入空格。

请注意,将 meta键名称更改为ss_child_page_ids还需要更新存储此字段的其余代码,并且还将取消链接任何现有值,因为您不再引用key

<?php
$pageIds = get_post_meta(get_the_ID(),'ss_child_page_ids', true);
$pageIds = array_map('trim', explode(',', $pageIds ));

$args = array(
    'post_type' => 'page', 
    'post__in'  => $pageIds
);

$childrens也可以改为$children,它已经是复数形式了。
现在$pageIds应该是一个数组,每个id项都有,比如'1,2,3,4,5'将是['1','2','3','4','5']

相关问题