php 自定义插件激活时无法使用Elementor编辑,找不到内容区域

xcitsw88  于 2023-06-28  发布在  PHP
关注(0)|答案(2)|浏览(229)

我做了一个自定义插件,它可以创建一个包含自定义post类型数据的表。我使用的是“宝石”主题,这个问题是特定于此页面只(这是不使用不同的模板)。当我激活此插件时,我无法“使用Elementor编辑”,并在尝试时收到以下消息:对不起,您访问的页面不存在。您必须在当前模板中调用'the_content'函数,以便Elementor在此页面上工作。
当插件被激活时,它不会破坏页面,我只是不能用Elementor编辑页面。我可以解除它然后回到元素门我尝试添加_content();插入到我的插件中,但这不起作用。我认为这是插件代码中的一些东西,因为如果我只是回显“Hello World!“没有问题,我可以回到Elementor编辑器。编辑以包含下面的完整插件代码:

function queryGrantPosts() {
    // the args
    $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
    $args = array(
        'post_type' => 'grants',
        'posts_per_page' => '10',
        'paged' => $paged,
        'orderby' => 'title',
        'order' => 'ASC',
    );
    $args['search_filter_id'] = 1350;

    $myPosts = new WP_Query($args) ;
    return $myPosts ;
}

function createTableEndHTML(){
    $myHTML = '';
    $myHTML .= '    </table>';
    $myHTML .= '</div>';
    $myHTML .= '<div class="pagination">';
    $myHTML .= '    <?php the_custom_pagination( $the_query); ?>';
    $myHTML .= '</div>';
    return $myHTML;
                
}
function createTableStartHTML(){
    $myHTML = '';

    $myHTML .= '<div class="table-wrap">';
    $myHTML .= '    <table class="grants-list">';
    $myHTML .= '            <thead class="grants-listing">';
    $myHTML .= '                    <th width="33%">Organization,<br>Program Name</th>';
    $myHTML .= '                    <th width="10%">City,<br>Location</th>';
    $myHTML .= '                    <th width="8%">Amount</th>';
    $myHTML .= '                    <th width="5%">Life Cycle (months)</th>';
    $myHTML .= '                    <th width="25%">Counties Served</th>';
    $myHTML .= '            </thead>';
    return $myHTML;
}

function createTableContentHTML($pPosts){
    $myHTML = '';

    // the loop 
    while ( $pPosts->have_posts() ) : $pPosts->the_post(); 
        $number = get_field('amount_num'); 
        $amount = number_format($number);
        $programName = get_field('program_name');
        $organizationCity = get_field('organization_city');
        $geographicLocation = get_field('geographic_location');
        $grantLifeCycle = get_field('grant_life_cycle');
        $myTerms = get_the_terms(get_the_ID(), 'counties_served');
        if ( $myTerms && ! is_wp_error($myTerms) ) {
            $myTermList = join(', ', wp_list_pluck($myTerms, 'name'));
        }
                    
        $myHTML .= '<tr class="grants-listing">';
        $myHTML .= '    <td class="program-name">';
        $myHTML .= '        <span style="font-family: Gotham Bold, sans-serif;">' . get_the_title() . '</span></br>' ;
        $myHTML .= $programName . '</td>';
        $myHTML .= '    <td>' . $organizationCity . '<br><em>' . $geographicLocation . '</em></td>';
        $myHTML .= '    <td>' . $amount . '</td>';
        $myHTML .= '    <td>' . $grantLifeCycle . '</td>';
        $myHTML .= '    <td>';
        $myHTML .= $myTermList;

        $myHTML .= '    </td>';
        $myHTML .= '</tr>';         
    endwhile; 
    
    return $myHTML;

}

function createTablePagination($pPosts){
    $myHTML = '';
    $myHTML .= '<div class="gem-pagination">';
    $myHTML .= the_custom_pagination( $pPosts ); 
    $myHTML .= '</div>';
    return $myHTML;
}
the_content(); 
add_shortcode('bpr_grant_table', 'createGranteeTable');
function createGranteeTable(){
    $myPosts = queryGrantPosts();
    echo createTableStartHTML();
    echo createTableContentHTML($myPosts);
    echo createTableEndHTML();
    if (function_exists( 'the_custom_pagination' ) ) {
        createTablePagination($myPosts);
    } else {
        echo 'function not found';
    }
}

有什么想法吗?我是不是调用了错误的函数或者在错误的地方?

nmpmafwu

nmpmafwu1#

有不同种类的解决方案来解决这个问题。
您或主题的开发人员是否为您的主题创建了一个不包括the_content功能的自定义WordPress页面模板?您需要在代码中包含_content,以便使用Elementor编辑它或切换到不同的主题,这通常可以解决问题。首先,试着切换到Hello这样的主题,看看你的问题是否解决了。如果您是Web开发人员并且正在开发主题,请将_content函数添加到页面模板的代码中。这是您需要添加的行:<?php the_content(); ?>如果您不熟悉在哪里放置此代码或如何将其添加到页面,请联系您的网站开发人员,以便它可以正确实施,因为我们无法提供完全支持。请注意,添加此代码不会启用编辑存档页面和最新文章页面(这些页面必须通过Elementor的主题构建器进行编辑),而且非常简单。
欲了解更多信息,请阅读以下文章:
https://elementor.com/help/the-content-area-was-not-found-error/
https://kinsta.com/knowledgebase/you-must-call-the-content-function-elementor/
谢谢你

xwbd5t1u

xwbd5t1u2#

更新!找到了这个代码,为我解决了这个问题。如果我把这段代码放在查询之前

$wp_query = null;
$wp_query = new WP_Query($args);

循环后的代码

$wp_query = null;
wp_reset_query();

然后我就不会再得到Elementor错误。

相关问题