WordPress: Nützliche Funktionen für die Arbeit mit Arrays und Objects

WordPress ist mit nützlichen Funktionen vollgestopft. Da verliert man schnell den Überblick. Hier findest du eine Auswahl von Funktionen, die sich mit Arrays und Objects beschäftigen. Eine kleine Sammlung nützlicher Funktionen, die man eigentlich immer gebrauchen kann, wenn man denn weiß, dass es sie gibt.

wp_parse_args

Diese Funktion wird überall in WordPress genutzt und lässt sich ausgezeichnet für die eigene Arbeit verwenden. Hierbei wird ein Array mit Standardwerten und ein Array mit eigenen Argumenten übergeben. Zurückgegeben wird dann ein Array mit allen Argumenten, wobei die Standardwerte überschrieben werden. Es lässt sich auch ein Querystring übergeben, falls man mal mit URLs arbeitet.

$args = [
    'posts_per_page' = 15,
    'fields' => 'ids',
];

$defaults = [
    'post_type' => 'post',
    'posts_per_page' => 10,
    'post_status' => 'publish',
];

$results = wp_parse_args($args, $defaults);

/**
 * [
 *   'post_type' => 'post',
 *   'posts_per_page' => 15,
 *   'post_status' => 'publish',
 *   'fields' => 'ids',
 * ]
 */Code-Sprache: PHP (php)

shortcode_atts

Ähnlich wie wp_parse_args, werden zwei Arrays übergeben. Allerdings werden nur die Argumente ausgespuckt, die als Standardwerte zurückgegeben werden. Hauptsächlich wird die Funktion innerhalb von Shortcodes von WordPress verwendet, damit keine verbotenen Argumente mittels Shortcode übergeben werden können. Sie lässt sich allerdings auch gut für die eigenen Zwecke ausnutzen.

$args = [
    'posts_per_page' = 15,
    'fields' => 'ids',
];

$defaults = [
    'post_type' => 'post',
    'posts_per_page' => 10,
    'post_status' => 'publish',
];

$results = shortcode_atts($defaults, $args);

/**
 * [
 *   'post_type' => 'post',
 *   'posts_per_page' => 15,
 *   'post_status' => 'publish',
 * ]
 */Code-Sprache: PHP (php)

wp_list_pluck

Super, super nützlich! Hier übergibst du einen Array und einen Schlüsselnamen. Ausgegeben wird ein neuer Array mit den Werten des angegebenen Schlüssels. Wenn du bspw. einen Array mit Post-Objekten hast, kannst du damit einen Array erschaffen, der nur die IDs verwendet. WordPress nutzt diese Funktion in so ziemlich allen Teilen des Cores.

Hinweis: Der Array ist nicht unique. Das musst du dann noch selbst erledigen, damit keine doppelten Einträge enthalten sind. Verwende dafür array_unique und anschließend array_filter, um die Schlüssel zu korrigieren.

$posts = [
    [
        'ID' => 1,
        'name' => 'Ein schöner Name #1',
        'status' => 'publish',
    ],
    [
        'ID' => 2,
        'name' => 'Ein schöner Name #2',
        'status' => 'publish'
    ],
    [
        'ID' => 3,
        'name' => 'Ein schöner Name #3',
        'status' => 'draft',
    ],
];

$results = wp_list_pluck($posts, 'ID');

/**
 * [ 1, 2, 3 ]
 */Code-Sprache: PHP (php)

wp_list_filter

Hiermit lässt sich ein Array filtern. Hierbei gibst du den Array, einen Schlüssel und den dazugehörigen Wert zurück. Die Funktion gibt dir dann einen neuen Array zurückgeben, bei dem nur die Elemente zu finden sind, die zum angegebenen Schlüssel/Wert-Paar passen oder dem Wert entsprechen, den du mitgegeben hast. Der letzte Parameter gibt an, wie etwas gefiltert wird. Du kannst auch OR angeben, was nützlich ist, wenn du mehrere Filter-Paare gesetzt hast und eines dieser Filter zutreffen soll, aber nicht zwingend alle gleichzeitig mit AND.

$posts = [
    [
        'ID' => 1,
        'name' => 'Ein schöner Name #1',
        'status' => 'publish',
    ],
    [
        'ID' => 2,
        'name' => 'Ein schöner Name #2',
        'status' => 'publish'
    ],
    [
        'ID' => 3,
        'name' => 'Ein schöner Name #3',
        'status' => 'draft',
    ],
];

$filter = ['status' => 'publish'];
$operator = 'AND';
$results = wp_list_filter($posts, $filter, $operator);

/**
 * [
 *   [
 *     'ID' => 1,
 *     'name' => 'Ein schöner Name #1',
 *     'status' => 'publish,
 *   ],
 *   [
 *     'ID' => 2,
 *     'name' => 'Ein schöner Name #2',
 *     'status' => 'publish,
 *   ],
 * ]
 */Code-Sprache: PHP (php)