<?php
namespace Koselig\Support;
use Koselig\Models\User;
* Provides various base Wordpress helper functionality in a nice
* OO way.
*
* @author Jordan Doyle <jordan@doyle.wf>
*/
class Wordpress
{
* Get the page id.
*
* @return int
*/
public static function id()
{
return query()->post->ID ?? null;
}
* Check if the current page is a singular item (eg. a news post).
*
* @param array|string $types
*
* @return bool
*/
public static function singular($types = '')
{
return query()->singular($types);
}
* Check if the current page is a category page.
*
* @param array|string $categories categories to test for
* @return bool
*/
public static function category($categories = '')
{
return query()->category($categories);
}
* Check if the current page is an archive page.
*
* @param string|array|null $types check if the archive page is for this type
*
* @return bool
*/
public static function archive($types = null)
{
return $types === null || empty($types) ? query()->archive() : query()->postTypeArchive($types);
}
* Check if the current page is an author page.
*
* @param int|array|User $users
*
* @return bool
*/
public static function author($users = [])
{
if (!is_array($users)) {
$users = [$users];
}
foreach ($users as $key => $user) {
if ($user instanceof User) {
$users[$key] = $user->ID;
}
}
return query()->author($users);
}
* Check if we are on a multisite, and optionally check the multisite we are on.
*
* @param null|int|array $id id (or ids) to check against the site, or null if you want to just check
* if we are actually on a multisite
*
* @return bool
*/
public static function multisite($id = null)
{
if (is_array($id)) {
foreach ($id as $i) {
if (static::multisite($i)) {
return true;
}
}
}
return $id === null ? is_multisite() : ($id === static::getSiteId());
}
* Get a Wordpress option from the database.
*
* @param string $name name of the option to get
* @param mixed $default value to return if we don't have a value for the option.
*
* @return mixed
*/
public static function option($name, $default = false)
{
return get_option($name, $default);
}
* Get the current multisite id.
*
* @return int
*/
public static function getSiteId()
{
return get_current_blog_id();
}
* Get the current site that the user is currently browsing.
*
* @return \WP_Network
*/
public static function site()
{
return get_current_site();
}
* Get the current Wordpress version, includes Wordpress' version.php if it has to.
*
* @return mixed
*/
public static function version()
{
if (!isset($GLOBALS['wp_version'])) {
require_once ABSPATH . WPINC . '/version.php';
}
return $GLOBALS['wp_version'];
}
* Get the current logged in user. Generally, you shouldn't be using this
* function and should instead be using <code>auth()->user()</code> from Laravel to get
* the current logged in Wordpress user.
*
* Use of WP_User is deprecated, however this method will not be removed.
*
* @deprecated use <code>auth()->user()</code> instead.
*
* @return \WP_User
*/
public static function currentUser()
{
return wp_get_current_user();
}
}