当前位置: 首页 > 知识库问答 >
问题:

ACF自定义字段。在functions.php内部开展行动

古彦
2023-03-14

Wordpress木材ACF Pro。内部函数。php中,我有一个动作,每当发布一篇文章(类型为week)时就会触发。

我想从这篇文章中获取数据,并使用它为每个用户创建一个新的帖子。

我让它在某种程度上起作用。发布帖子时,我获取标题和用户名,并将其用作新创建帖子的标题。

但是,我在尝试提取ACF数据时遇到了问题-例如:week_commencing日期字段。所有ACF数据都返回NULL(我知道字段已填充)。

我已经阅读了文档 - 访问数据的状态,您需要调用get_field(“field_name”,“post_id”) - 我已经做到了。

我已经写出了$ID-所以知道这是正确的。

这可能是由于我运行事物的顺序吗?

这是我的代码:

function weekly_published_post_setup($ID, $post) {
    $customers = get_users();
    $theDate = get_field("week_commencing", $ID);

// Array of WP_User objects.
foreach ( $customers as $user ) {

        $new_post = array(
              'post_type' => 'weekly_tasks',
                'post_title' => $post->post_title . ' - ' . $theDate . ' - ' . $user->display_name,
                'post_content' => $theDate,
                'post_status' => 'publish',
                'post_author' => $user->ID
        );
    wp_insert_post($new_post);

        }
}
add_action( 'publish_week', 'weekly_published_post_setup',  10, 2 );

**编辑**

事实证明,在创建ACF字段之前,wordpress帖子被保存了吗?因此,一位好友重构了我的代码以使用不同的事件。但是,发布帖子时不会触发此操作...

function week_published_delivery_setup($ID) {

    $post = get_post($ID);

    if ($post->post_type != 'week') {
        return;
    }

    if( $post->post_modified_gmt != $post->post_date_gmt ){
        return;
    }

    $customers = get_users();

     $field = get_field('week_commencing', $ID);

     $fields = post.get_field_objects($ID);

     if( $fields )
     {
        foreach( $fields as $field_name => $field )
        {

                $tmp .= $field['label'] . $field['value'];
        }
    }*/



// Array of WP_User objects.
foreach ( $customers as $user ) {
        $new_delivery_post = array(
              'post_type' => 'delivery',
                'post_title' => $post->post_title . ' - ' . $field . ' - ' . $user->display_name,
                'post_content' =>  $post->post_title,
                'post_status' => 'publish',
                'post_author' => $user->ID
        );
    wp_insert_post($new_delivery_post);


        }
}
add_action( 'acf/save_post', 'week_published_delivery_setup',  20);

共有1个答案

劳灵均
2023-03-14

所以现在测试发布时的帖子状态——然后做需要做的事情。如果old_status==未来,new_status==发布,就可以了。

function on_all_status_transitions( $new_status, $old_status, $post ) {
    $ID = $post->ID;
    if ($post->post_type != 'week') {
        return;
    }

    if ( $new_status != $old_status && $old_status == 'future' && $new_status == 'publish' ) {

            $customers = get_users();

            $field = get_field('week_commencing', $ID);



            // Array of WP_User objects.
            foreach ( $customers as $user ) {
                $new_delivery_post = array(
                        'post_type' => 'delivery',
                        'post_title' => $post->post_title . ' - ' . $field . ' - ' . $user->display_name,
                        'post_content' =>  $post->post_title,
                        'post_status' => 'publish',
                        'post_author' => $user->ID
                );
                wp_insert_post($new_delivery_post);


                }

    }
}
add_action(  'transition_post_status',  'on_all_status_transitions', 20, 3 );
 类似资料:
  • 我在Wordpress中有一个名为“svg”的ACF字段菜单 为了创建我的菜单,我这样做: 我像这样显示我的菜单: 在我的Foreach中,我试图从我的菜单中调用我的ACF字段,如下所示: 但它不起作用(空)。我迷路了。如何获取我的 ACF 字段? 真是太感谢你了

  • 我为woocommerce产品“coffee_type”创建了自定义分类法。我为此分类法创建了一个ACF图像字段“coffee\u type\u image”。 我想在产品页面上显示带有链接的图像,而不是分类法的名称。我在这里读了大多数关于在分类法上显示acf图像的文章,但每一篇都是关于使用归档分类法页面而不是产品页面。我正在编辑single-product.php(确切地content-sing

  • 我正在使用ACF插件来管理一个WooCommerce网站内的各种自定义元数据。我试图设置的功能之一是向WooCommerce结帐页面添加自定义字段。我遵循WC文档页面上概述的一般概念,它允许您通过woocommerce_after_order_notes钩子将自定义表单追加到WC结帐表单。从那里,我使用acf_form()函数输入acf表单,表单设置为false,以允许它不包含acf表单元素(即a

  • 我成功地在后端的产品变化中的WooCommerce中创建了一个ACF自定义字段。该字段在每个变化中正确显示。 但是在编辑变体中的此字段或其他字段后,我无法再保存整个变体选项卡。加载/保存指示器圆圈继续无限旋转。并且定制字段未显示在前端的单个产品变体中。 我所做的是将以下代码添加到我的: 任何帮助都将不胜感激。

  • 我正在尝试为WP REST API创建一个自定义endpoint,该endpoint应包含某些ACF字段及其创建的选项,以防该字段是选择字段。 这是我在中尝试的代码: 这是创建endpoint的函数: 但是,这样做我会得到以下JSON输出: 所以显然是不行的。我做错了什么?

  • 我有一个前端ACF表单-ACF_表单()。使用post对象字段。我想通过自定义字段限制查询结果。下面的代码可以正常工作,除了当我尝试在搜索栏中键入时,会出现以下错误:我得到的错误是ajax响应中的PHP错误; 0:“PhpConsole\Handler”- 1:"strpos()" 2:"acf_order_by_search()" 3:“acf_field_post_object- 4:“acf