为了账号安全,请及时绑定邮箱和手机立即绑定

如何在数组中添加结构化数据架构

如何在数组中添加结构化数据架构

PHP
梦里花落0921 2022-08-05 09:31:06
如何将结构化数据主实体添加为数组@type问题?从我的代码中可以看出,我需要将主实体作为数组,以便将高级自定义字段转发器行传递到架构中,以尝试构建常见问题解答。我尝试传递到结构化数据中的字段是一个非常基本的ACF中继器,您可以在此处看到:<section class="faq">    <div class="container max-width px-5">        <div class="row">            <div class="col-lg-6 features-title-block">                <h2 class="mpc-header"> <?php if ( get_field('faq_header') ) : ?>                    <?php the_field('faq_header'); ?>                    <?php endif; ?></h2>                    <?php if ( get_field('faq_sub_text') ) : ?>                    <div class="pb-5"><?php the_field('faq_sub_text'); ?></div>                <?php endif; ?>            </div>            <div class="col-lg-6">                <?php if ( have_rows('faq') ) : ?>                <div class="accordion" id="accordionExample">                    <?php while( have_rows('faq') ) : the_row(); ?>                    <div class="card">                        <div class="card-header" id="heading<?php echo get_row_index(); ?>">                            <h2 class="mb-0">                                <button class="btn btn-link d-inline-flex" type="button" data-toggle="collapse"                                    data-target="#collapse<?php echo get_row_index(); ?>" aria-expanded="true"                                    aria-controls="collapse<?php echo get_row_index(); ?>">                                    <?php the_sub_field('question'); ?>                                </button>                            </h2>                        </div>
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

我不是WordPress的专业人士,但是如果您尽可能避免全局变量,这将对您的应用程序有好处。只需尝试以下代码。


<?php

function generate_faq_schema () {

    if ( have_rows('faq') ) {

        $schema = [

            '@context'   => "https://schema.org",

            '@type'      => "FAQPage",

            'mainEntity' => array()

        ];

        while ( have_rows('faq') ) : the_row();

            $questions = [

                '@type'          => 'Question',

                'name'           => get_sub_field('question'),

                'acceptedAnswer' => [

                    '@type' => "Answer",

                    'text' => get_sub_field('answer')

                ]

            ];

            array_push($schema['mainEntity'], $questions);

        endwhile;

        echo '<script type="application/ld+json">'. json_encode($schema) .'</script>';

    }

}

add_action( 'wp_footer', 'generate_faq_schema', 100 );


?>

还要在此处检查add_action的第四个参数。


查看完整回答
反对 回复 2022-08-05
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

<section class="faq">

    <div class="container max-width px-5">

        <div class="row">

            <div class="col-lg-6 features-title-block">

                <h2 class="mpc-header"> <?php if ( get_field('faq_header') ) : ?>

                    <?php the_field('faq_header'); ?>

                    <?php endif; ?></h2>

                    <?php if ( get_field('faq_sub_text') ) : ?>

                    <div class="pb-5"><?php the_field('faq_sub_text'); ?></div>

                <?php endif; ?>

            </div>

            <div class="col-lg-6">

                <?php if ( have_rows('faq') ) : ?>

                <div class="accordion" id="accordionExample">

                    <?php while( have_rows('faq') ) : the_row(); ?>

                    <div class="card">

                        <div class="card-header" id="heading<?php echo get_row_index(); ?>">

                            <h2 class="mb-0">

                                <button class="btn btn-link d-inline-flex" type="button" data-toggle="collapse"

                                    data-target="#collapse<?php echo get_row_index(); ?>" aria-expanded="true"

                                    aria-controls="collapse<?php echo get_row_index(); ?>">


                                    <?php the_sub_field('question'); ?>


                                </button>

                            </h2>

                        </div>

                        <div id="collapse<?php echo get_row_index(); ?>" class="collapse"

                            aria-labelledby="heading<?php echo get_row_index(); ?>" data-parent="#accordionExample">

                            <div class="faq-content card-body">

                                <?php the_sub_field('answer'); ?>

                            </div>

                        </div>

                    </div>

                    <?php endwhile; ?>

                    <?php

                    $schema = array(

                    '@context'   => "https://schema.org",

                    '@type'      => "FAQPage",

                    'mainEntity' => array()

                    );

                    global $schema;

                    if ( have_rows('faq') ) {

                        while ( have_rows('faq') ) : the_row();

                            $questions = array(

                                '@type'          => 'Question',

                                'name'           => get_sub_field('question'),

                                'acceptedAnswer' => array(

                                '@type' => "Answer",

                                'text' => get_sub_field('answer')

                                )

                                );

                                array_push($schema['mainEntity'], $questions);

                                        endwhile;

                    function generate_faq_schema ($schema) {

                    global $schema;

                    echo '<script type="application/ld+json">'. json_encode($schema) .'</script>';

                    }

                    add_action( 'wp_footer', 'generate_faq_schema', 100 );

                    }

                    ?>

                    <?php endif; ?>

                    <!-- endif have_rows('faq'); -->

                </div>

            </div>

        </div>

    </div>

</section>

经过大量的测试,两个答案都收到了某种结果,但实际工作的代码没有错误,并且正在拉到Google上面。


请随时提出任何建议,使它变得更好。


查看完整回答
反对 回复 2022-08-05
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

我已经测试了输出您正在寻找的确切格式,以下是我的片段作为示例:


<?php

    global $schema;


    $schema = array(

        '@context' => "https://schema.org",

        '@type' => "FAQPage",

        'mainEntity' => array()

    );


    while (have_posts()) {

        the_post();

        get_template_part('template-parts/post-formats/post', get_post_format());

        array_push($schema['mainEntity'], array(

            '@type' => get_post_format(),

            'title' => get_the_title()

        ));

    }


    function generate_faq_schema()

    {

        global $schema;

        echo '<script type="application/ld+json">' . json_encode($schema) . '</script>';

    }


    add_action('wp_footer', 'generate_faq_schema', 100);

?>


查看完整回答
反对 回复 2022-08-05
  • 3 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信