当前位置: 首页 > 面试题库 >

WordPress类别发布AJAX分页

孟晋
2023-03-14
问题内容

我真的很难找到一种方法来为我的Wordpress帖子创建使用ajax的分页。我找到的解决方案不起作用。

为了在此提供更多信息,下面是一个链接,该链接的底部具有用于分页的项目符号。单击这些后,我希望网站的效果加载新帖子而不触发页面刷新。
http://maxlynn.co.uk/natural-
interaction/category/all/

我的问题是,对于这种效果,是否有任何好的教程可以使您成功。

如果您需要更多信息,请与我们联系。

**更新**

function kriesi_pagination($pages = '', $range = 2) {
 $showitems = ($range * 2)+1;

 global $paged;
 if (empty($paged)) $paged = 1;

 if ($pages == '') {
     global $wp_query;
     $pages = $wp_query->max_num_pages;
     if (!$pages) {
         $pages = 1;
     }
 }

 if (1 != $pages) {
     echo "<div class='pagination'><div class='pagination-container'>";
     if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>&laquo;</a>";
     if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>&lsaquo;</a>";

     for ($i=1; $i <= $pages; $i++) {
         if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
         {
             echo ($paged == $i)? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' >".$i."</a>";
         }
     }

     if ($paged < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($paged + 1)."'>&rsaquo;</a>";
     if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>&raquo;</a>";
     echo "</div>\n</div>\n";
 }

}

这是我正在使用的PHP,如何使用此php创建ajax请求,以使页面不会重新加载?


问题答案:

您需要做的是防止分页链接上的默认设置,并发送AJAX请求以获取帖子。WordPress以这种方式用于AJAX:您将所有请求发送到wp- admin/admin-ajax.php一个action参数,该参数将标识请求,以便使用and 钩子将其捕获到 functions.php中
wp_ajax_nopriv_my_action``wp_ajax_my_action

因此,基本上,您将在模板文件中执行此操作:

<script type="text/javascript">
    jQuery(document).ready(function($) {
        $('.pagination a').click(function(e) {
            e.preventDefault(); // don't trigger page reload
            if($(this).hasClass('active')) {
                return; // don't do anything if click on current page
            }
            $.post(
                '<?php echo admin_url('admin-ajax.php'); ?>', // get admin-ajax.php url
                {
                    action: 'ajax_pagination',
                    page: parseInt($(this).attr('data-page')), // get page number for "data-page" attribute
                    posts_per_page: <?php echo get_option('posts_per_page'); ?>
                },
                function(data) {
                    $('#content-posts').html(data); // replace posts with new one
                }
            });
        });
    });
</script>

您必须根据模板来更改类名称/属性等。

而在 functions.php 方面:

function my_ajax_navigation() {
    $requested_page = intval($_POST['page']);
    $posts_per_page = intval($_POST['posts_per_page']) - 1;
    $posts = get_posts(array(
        'posts_per_page' => $posts_per_page,
        'offset' => $page * $posts_per_page
    ));
    foreach ($posts as $post) {
        setup_postdata( $post );
        // DISPLAY POST HERE
        // good thing to do would be to include your post template
    }
    exit;
}
add_action( 'wp_ajax_ajax_pagination', 'my_ajax_navigation' );
add_action( 'wp_ajax_nopriv_ajax_paginationr', 'my_ajax_navigation' );

问题是查询所请求页面的帖子(以便我们计算页码和每页帖子选项的偏移量),并使用用于单个帖子的模板显示它们。

您可能还需要操纵浏览器历史记录,为此,您应该检查一下History API。



 类似资料:
  • 本文向大家介绍WordPress的类别发布列表,包括了WordPress的类别发布列表的使用技巧和注意事项,需要的朋友参考一下 我的一个朋友前几天要求我编写Wordpress函数,以打印出类别列表以及这些类别中的所有帖子以及帖子中可能包含的所有元数据。 该功能所要做的就是获取类别列表,然后为每个类别获取与该类别关联的帖子列表。确实不多,但在某些情况下很有用。 要使用该功能,请将其弹出到functi

  • 我有两个来自存档的自定义帖子类型。php之一是归档slug。另一个是类别slug。php。分页在归档slug上起作用。php,但在类别slug上的代码相同。php甚至不会显示。我对Wordpress和php有些陌生,所以我确定我在这里遗漏了一些东西,我只是不知道什么?

  • 本文向大家介绍Wordpress 3.0发布!,包括了Wordpress 3.0发布!的使用技巧和注意事项,需要的朋友参考一下 制作已经有一段时间了,但是昨天看到了最新的主要版本的Wordpress的发布。我感觉很快就会在上周发布最终发布候选版本(RC3)的时候到来。您可以在下面的Wordpress 3.0下载页面: 下载Wordpress 3.0 那么,Wordpress 3.0的新功能是什么?

  • 我已经为产品创建了一些自定义类别,它有子类别,子类别还有更多的子类别。现在我首先显示主要类别。如果我在那里显示子类别,那么将显示与该类别及其子类别相关的所有子类别。我想一步一步地向他们展示。也就是说,如果用户单击主类别,则会转到其子类别页面。如果用户单击其子类别之一,则应转到子类别,如果没有子类别,则显示产品。这是什么代码 它覆盖了以前的排序顺序。也就是说,如果从仪表板中,我们按排序顺序给出2到3

  • 问题内容: 我正在使用下面的循环+ jQuery在下一组页面中加载,并且在第一次单击时有效,但是当加载下一页并单击“较新的帖子”时,它将重新加载整个页面。有任何想法吗? 问题答案: 您正在使用jQuery的方法插入内容,这是的快捷方式,当然可以动态地插入内容。 动态内容需要将事件委派给非动态父对象,而jQuery可以轻松实现

  • 我正在开发一个自定义的wordpress主题(第一次),我已经创建了下面的文件,他们工作很好,遵循本教程。 现在的问题是当我在主页上点击一个类别名称时,它显示我404错误,我试图创建category.php但仍然是同样的问题。这是我的index.php,我用它来表示category.php 我有两个问题: 是否真需要创建category.php,或者我们是否可以使用index.php来显示来自类别