如何在 wordpress 中 运行 特定 post 上的函数?

How do I run a function on a specific post in wordpress?

我在 Wordpress 中有一个函数可以获取字段和 returns 一个字符串。该函数在当前 post 上调用时工作正常,但现在我需要将函数获取到当前 post 之外的 运行 并从其他 post 获取数据。我正在尝试:

$posts = get_posts(array(
    'numberposts' => -1,
    'post_type' => 'post'
));

if($posts) {
    foreach( $posts as $post ) {
        $postid = $post->ID;
        $datafrompost[] = custom_func($postid);
    }
    echo print_r($datafrompost);
}

如何将函数 运行 设置为不同的 post?

下面是它将获取的函数类型的示例:

//[inactivesubjects]
function inactivesubjects_func( $atts ){
$inactivesubjects = get_field('inactive_subjects');
return $inactivesubjects;
}
add_shortcode( 'inactivesubjects', 'inactivesubjects_func' );

这个函数工作正常,在当前post中是运行时获取inactive_subjects中的内容。

//////////////////////////更新//////////////// ///////////

所以我会按照 Hobo 的建议将其添加到函数中:

//[inactivesubjects]
function inactivesubjects_func( $anact ){
$inactivesubjects = get_field('inactive_subjects', $anact);
return $inactivesubjects;
}
add_shortcode( 'inactivesubjects', 'inactivesubjects_func' );

这就是电话

$posts = get_posts(array(
    'numberposts' => -1,
    'post_type' => 'post'
));

if($posts) {
    foreach( $posts as $post ) {
      $datafrompost[] = inactivesubjects_func($anact);
    }
    echo print_r($datafrompost);
}

但它没有指定 post?

///////////////////更新 2/////////////////////

真正让我困惑的是这会起作用

$posts = get_posts(array(
    'numberposts' => -1,
    'post_type' => 'post'
));

if($posts) {
    foreach( $posts as $post ) {

     $string = get_field('inactive_subjects', $post->ID);
    }
    echo print_r($string);
}

为什么我不能在 foreach 中使用 inactivesubjects_func()? (注意 inactivesubjects_func() 是一个例子,我试图在其他 post 上 运行 的实际函数相当大)

你没有听懂我说的话 - 你改变的比我说的要多(也许评论太短,我无法解释清楚)。根据您的第一次编辑,这应该可行。

$posts = get_posts(array(
    'numberposts' => -1,
    'post_type' => 'post'
));

if($posts) {
    foreach( $posts as $post ) {
      $datafrompost[] = inactivesubjects_func($post->ID);
    }
    echo print_r($datafrompost);
}

function inactivesubjects_func( $anact){
    $inactivesubjects = get_field('inactive_subjects', $anact);
    return $inactivesubjects;
}

如果您想使用 inactivesubjects_func 作为短代码,您会遇到问题,因为 WordPress 传递短代码参数的方式,但这是一个单独的问题。