Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Wordpress中自动更新自定义帖子_Php_Wordpress - Fatal编程技术网

Php 在Wordpress中自动更新自定义帖子

Php 在Wordpress中自动更新自定义帖子,php,wordpress,Php,Wordpress,在Wordpress中,我使用的是LearnPress插件。这个插件(据我所知)创建了名为lp\u lesson的自定义帖子。我还使用了一个名为Advanced Custom Fields PRO的插件。此插件允许在每个lp\u课程上创建附加字段。我添加的自定义字段的名称(我猜是变量名)为wpk\u role\u options 我想做的是为循环找到一个for循环,该循环遍历每个lpu课程,并使用开关或如果有,检查与该课程相关的类别。如果满足该条件,我想在wpk\u角色\u选项自定义字段中添加文

在Wordpress中,我使用的是LearnPress插件。这个插件(据我所知)创建了名为
lp\u lesson
的自定义帖子。我还使用了一个名为Advanced Custom Fields PRO的插件。此插件允许在每个
lp\u课程
上创建附加字段。我添加的自定义字段的名称(我猜是变量名)为
wpk\u role\u options

我想做的是为循环找到一个
for循环
,该循环遍历每个
lpu课程
,并使用
开关或
如果有
,检查与该课程相关的
类别
。如果满足该条件,我想在
wpk\u角色\u选项
自定义字段中添加文本

我想我大部分的逻辑都是完整的,但是更多的语法让我感到困惑

任何帮助都将不胜感激

到目前为止,我收集的信息:

<?php
//Get post type of lp_lesson
    $args = array(
        'post_type' => 'lp_lesson'
    );
    $post_query = new WP_Query($args);

    //Categories of lp_lesson
    $categories = get_categories($args);

if($post_query->have_posts() ) {
  while($post_query->have_posts() ) {
    foreach($categories as $category) {
        if (in_category('Test', $post_query)){
            //change wpk_role_options from lesson
        }
    }
  }
}
?>

您使用的是“WordPress循环”语法,用于在公共端显示帖子列表。但是,您不会真的想在管理端使用它

您需要使用普通的php循环。您可能还想使用更快更简单的
get_posts
功能:

//Get post type of lp_lesson
$args = array(
    'post_type' => 'lp_lesson'
);
$posts = get_posts($args);

$categories = get_categories();

for($posts as $post) {

    foreach($categories as $cat) {
       if ( in_category( $cat->term_id, $post) ){
          // This post has the category 
       }
    }

    // get/check for a post custom field
    $field_value = get_post_meta( $post->ID, 'meta_name', 1);

    // or you can also update this post's custom field
    update_post_meta( $post->ID, 'meta_name', 'new_value' );

  }
}

我真的不知道你为什么要循环浏览这些类别。如果您只是检查一个特定的类别,那么您可以在$categories这件事周围取出整个foreach

你有没有试过在Google
上搜索php中的循环
我知道它背后的逻辑。更多的是变量。比如如何访问
wpk\u角色\u选项
文本、
类别
,以及循环浏览
lp\u课程
。让我发布我到目前为止所拥有的,也许这会有更多的帮助。肯定会有更多的代码示例会有帮助。我相信我走的方向是正确的。@Torevin你什么时候运行这段代码?管理员何时保存帖子?或者当用户在前端查看帖子时?还是什么?我打算对找到的每一个类别都做些什么。我可以启动我的
开关来代替
foreach
?还有,你能解决最后一部分吗?在每篇文章中添加/修改自定义字段中的文本?是的,如果你想对a类文章做一些特定的操作,而对B类文章做一些不同的操作,那么切换可能是你最好的选择。在这种情况下,您也可以删除
get_categories
行。@Torewin确定我在回答中添加了一些有用的函数。您能确认修改后的代码就是您在删除类别时所说的代码吗?@Torewin,是的。但你不应该把答案转移到你的问题中。这让每个人都感到困惑。相反,只要接受对你有帮助的答案。