如何将ACF字段复制到AIOSEO字段?

时间:2018-10-03 作者:BlueDogRanch

我正在尝试更新和修改此问题的公认答案Copy SEO Meta Desc "Custom Field" to Excerpt field? 使用ACF自定义字段和不同的“if”逻辑。

我想检查帖子是否有一个名为body; 如果有,请检查是否存在_aioseop_description 岗位字段;如果为空,请写入$add_description_aioseop_description 领域

但这对插件激活不起作用,调试中也没有错误。日志

我的“如果”逻辑正确吗?

register_activation_hook( __FILE__, \'wpse_activation_run\' );

function wpse_activation_run()
{   
    $args = array( 
        \'post_type\'   => \'post\',
        \'numberposts\' => -1,
        \'post_status\' => \'published\',
    );
    $posts = get_posts( $args );

    $body = get_field(\'body\');

    foreach ( $posts as $post )
    {

        if (!empty($body) )

        {

            $add_description = get_field(\'body\'); substr($add_description, 0, 150);

            $aioseop = get_post_meta( $post->ID, \'_aioseop_description\' ,true);

                if (empty($aioseop) )
{

                $po[\'_aioseop_description\'] = $add_description;
                wp_update_post($po);
            }
        }
    }   
}
Update: 这很有效,而且更像是一种“重锤式”方法,因为它不会检查_aioseop_description 字段已填充或ACF字段存在;这将覆盖_aioseop_description 每次激活时的字段。这将适用于post 和一个名为body. 它还使用wp_trim_words, 和用途update_post_meta 而不是更新整个帖子。

register_activation_hook( __FILE__, \'wpse_activation_run\' );

function wpse_activation_run()
{   
    $args = array( 
        \'post_type\'   => \'post\',
       \'numberposts\' => -1,
       \'post_status\' => \'published\',
    );

    $posts = get_posts( $args );

    foreach ( $posts as $post )

    {

    $add_description = get_field(\'body\', $post->ID); 

    $trimmed = wp_trim_words( $add_description, $num_words = 20,\'\' );

    update_post_meta( $post->ID, \'_aioseop_description\', $trimmed );
}

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

我注意到两件事:get_field() 未指定要从中获取字段的帖子,这在循环之外是必需的:

$add_description = get_field( \'body\', $post->ID );`
要设置post元值,您应该使用update_post_meta(), 不wp_update_post():

update_post_meta( $post->ID, \'_aioseop_description\', $add_description );

结束

相关推荐

如何在WooCommerce变体产品中回放一段PHP代码?

我有一点复杂的解释问题,我希望有人能理解和帮助我。我在WooCommerce上设置了自定义字段,用于输入每个产品的特定代码(类似于SKU,称为“asin”),然后我在后端使用亚马逊API从亚马逊的产品页面获取价格(别担心,我的问题是一般性的,与API无关)。下面是我的简单产品类型代码示例,它的工作方式与我所需要的完全一样。<?php //This is the code i use to get the \"asin\" value from custom fields.

如何将ACF字段复制到AIOSEO字段? - 小码农CODE - 行之有效找到问题解决它

如何将ACF字段复制到AIOSEO字段?

时间:2018-10-03 作者:BlueDogRanch

我正在尝试更新和修改此问题的公认答案Copy SEO Meta Desc "Custom Field" to Excerpt field? 使用ACF自定义字段和不同的“if”逻辑。

我想检查帖子是否有一个名为body; 如果有,请检查是否存在_aioseop_description 岗位字段;如果为空,请写入$add_description_aioseop_description 领域

但这对插件激活不起作用,调试中也没有错误。日志

我的“如果”逻辑正确吗?

register_activation_hook( __FILE__, \'wpse_activation_run\' );

function wpse_activation_run()
{   
    $args = array( 
        \'post_type\'   => \'post\',
        \'numberposts\' => -1,
        \'post_status\' => \'published\',
    );
    $posts = get_posts( $args );

    $body = get_field(\'body\');

    foreach ( $posts as $post )
    {

        if (!empty($body) )

        {

            $add_description = get_field(\'body\'); substr($add_description, 0, 150);

            $aioseop = get_post_meta( $post->ID, \'_aioseop_description\' ,true);

                if (empty($aioseop) )
{

                $po[\'_aioseop_description\'] = $add_description;
                wp_update_post($po);
            }
        }
    }   
}
Update: 这很有效,而且更像是一种“重锤式”方法,因为它不会检查_aioseop_description 字段已填充或ACF字段存在;这将覆盖_aioseop_description 每次激活时的字段。这将适用于post 和一个名为body. 它还使用wp_trim_words, 和用途update_post_meta 而不是更新整个帖子。

register_activation_hook( __FILE__, \'wpse_activation_run\' );

function wpse_activation_run()
{   
    $args = array( 
        \'post_type\'   => \'post\',
       \'numberposts\' => -1,
       \'post_status\' => \'published\',
    );

    $posts = get_posts( $args );

    foreach ( $posts as $post )

    {

    $add_description = get_field(\'body\', $post->ID); 

    $trimmed = wp_trim_words( $add_description, $num_words = 20,\'\' );

    update_post_meta( $post->ID, \'_aioseop_description\', $trimmed );
}

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

我注意到两件事:get_field() 未指定要从中获取字段的帖子,这在循环之外是必需的:

$add_description = get_field( \'body\', $post->ID );`
要设置post元值,您应该使用update_post_meta(), 不wp_update_post():

update_post_meta( $post->ID, \'_aioseop_description\', $add_description );

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请