load more button in plugin

时间:2019-02-10 作者:hessam hosseinipour

我写了一个简单的插件,它创建了一个名为cryptoevent 并创建metabox 如果有一些自定义字段,我将使用WP_Query, 现在我想用一个加载更多按钮来显示它们,请注意,这应该是一个插件,我不希望用户必须更改他/她的主题function.php, 这是我的代码,谢谢你的帮助。我是个初学者,顺便说一下,请用一种简单的语言帮助我。

function cryptoevent_addform( $atts ) {

    $args = array( \'post_type\' =>\'cryptoevent\',\'posts_per_page\'=>8);
    $loop = new WP_Query( $args );
    while ( $loop->have_posts() ) : $loop->the_post();
        echo \'<div style="padding:0 15%;"><h2>\';
        the_title(); ?>
        <p><?php echo get_post_meta( get_the_ID(), \'date_add\', true ); ?></p>
        <p><?php echo get_post_meta( get_the_ID(), \'date_expiration\', true ); ?></p>


        <?php
        echo \'</h2></div>\';
    endwhile;
    wp_reset_query();
}
add_shortcode( \'cryptoevent\', \'cryptoevent_addform\' );

2 个回复
SO网友:tmdesigned

如果你想让它像一个真正的“加载更多”按钮一样工作,那么你必须让帖子分组加载,而不需要用户更改页面。这意味着您必须使用AJAX方法。这比现在的WordPress循环要复杂得多。

总的来说,它是这样工作的,代码分为两部分:

A. Code that displays results

    通过AJAX(或其他数字)请求最多10个结果加载时,在屏幕上显示这些结果
  1. 如果有更多结果可用,请显示“加载更多”按钮如果用户点击“加载更多”,请返回步骤1

    B. Code that fetches results

    <查看请求了哪些结果(哪个页面)
  2. 回显结果A. 以及您的代码B. 以上生活在不同的地方。

    这个A 代码或多或少是您编写的cryptoevent\\u addform函数中的代码。这与您拥有的非常不同,但基本上就是处理前端。主要区别在于,不是通过WP\\u QUERY和PHP获取帖子,而是通过JavaScript AJAX请求,通过WordPress AJAX系统,将帖子发送到您的B 密码

    这个B 代码处理后端。它也可以存在于您的插件中,但需要通过WordPress AJAX API注册。

    我们为什么要这样做?页面的正常流程是(1)后端(PHP/mySQL/etc),然后(2)前端(HTML/JavaScript/etc)。但这里我们必须改变顺序。您允许用户(前端)从您的数据库(后端)获取帖子,而不必重新加载页面。因此,为了改变顺序,我们必须将代码分为两部分,然后使用AJAX开始页面流程。

    您将想了解如何构造WordPress AJAX调用,这超出了我们在堆栈交换答案中所能涵盖的范围。See the documentation.

SO网友:hessam hosseinipour

我改用paginate,并使用下面的代码

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$data= new WP_Query(array(
\'post_type\'=>\'cryptoevent\', // your post type name
\'posts_per_page\' => 3, // post per page
\'paged\' => $paged,
 ));
if($data->have_posts()) :
while($data->have_posts())  : $data->the_post();
the_title(); 
php
endwhile;
?><br><?php
$total_pages = $data->max_num_pages;
if ($total_pages > 1){
    $current_page = max(1, get_query_var(\'paged\'));
    $big = 99999; // need an unlikely integer
    echo paginate_links(array(
        \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
        \'format\' => \'/page/%#%\',
        \'current\' => $current_page,
        \'total\' => $total_pages,
        \'prev_text\'    => __(\'« prev\'),
        \'next_text\'    => __(\'next »\'),
    ));
}
?>
<?php else :?>
<h3><?php _e(\'404 Error&#58; Not Found\', \'\'); ?></h3>
<?php endif; ?>
<?php wp_reset_postdata();
如果我设置permalinks 在…上plain, 但我的网站永久链接设置为post name, 请帮帮我,非常感谢。

相关推荐

在PHP文件中包含Gutenberg块

Hi There有没有办法在PHP文件中包含Gutenberg块?Example: 我创建了一个名为:posts grid, 这是一个显示最新帖子的块,用户可以更改要显示的帖子数量和获取帖子的类别,现在我想创建一个自定义帖子模板,并在其中动态使用此块,我要查找的内容类似于do_shortcode() 对于短代码谢谢