motiontactic/wp-ajax

类用于扩展以向 WP-AJAX 添加样板代码

1.7 2022-01-20 22:19 UTC

This package is auto-updated.

Last update: 2024-09-06 17:59:07 UTC


README

Latest Stable VersionTotal DownloadsLicense

一个类,用于快速添加样板代码以设置 WordPress AJAX

安装

推荐通过 composer 安装 WP MU 插件

$ composer require motiontactic/wp-ajax

使用方法

设置

此 motiontactic\WP_AJAX 类旨在扩展以控制查询。扩展后,使用所需设置构造您的新类

<?php
require_once __DIR__ . '/vendor/autoload.php';

use motiontactic\WP_AJAX;

class BlogFeed extends WP_AJAX
{
	protected function getQueryArgs()
	{
		return [
			'post_status'    => 'publish',
			'post_type'      => 'post',
			'posts_per_page' => 1,
			'paged'          => $_REQUEST[ 'page' ],
		];

	}
}

new BlogFeed( [
	'action'                   => 'get_posts',
	'output_template'          => 'partials.blog-posts',
	'pagination_template'      => 'partials.blog-pagination',
	'pagination_pages_to_show' => 9,
	'include_nopriv'           => true,
] );

默认参数

$args = [
	'action'                   => 'get_posts',  //ajax action name used by JS to address this query
	'output_template'          => false,        //blade template location for the output html
	'pagination_template'      => false,        //blade template location for the pagination html
	'pagination_pages_to_show' => 9,            //Used in the pagination array creation
	'include_nopriv'           => true,         //Whether or not to include wp_ajax_nopriv
];

额外功能

如果您只需要访问分页功能,您可以通过静态方法 arrayOfPages 访问它

motiontactic\WP_AJAX::arrayOfPages( 6, 100, 9 );

Blade 起始点

输出

//coming soon has access to $posts which is an array of WP Post objects

分页

@if( $current_page !== 1)
  <a href="?paged={{ $current_page - 1 }}" class="prev-arrow nav-arrow"
     data-paged="{{ $current_page - 1 }}">
    <div class="pagination-arrow prev">
      <
    </div>
  </a>
@endif
@foreach($pages as $page)
  @if($page === 'E')
    <p class="page width-auto pagination-spacing">
      ...
    </p>
  @else
    <a href="?paged={{ $page }}"
       class="page width-auto {{ $page === $current_page ? 'current' : '' }}"
       data-paged="{{ $page }}">{{ $page }}</a>
  @endif
@endforeach
@if( $current_page !== $max_pages )
  <a href="?paged={{ $current_page + 1 }}" class="next-arrow nav-arrow"
     data-paged="{{ $current_page + 1 }}">
    <div class="pagination-arrow next">
      >
    </div>
  </a>
@endif