Skip to main content
Tweeted twitter.com/StackWordPress/status/1265523230258888704
new problem
Source Link
ndru
  • 159
  • 3
  • 13

My categories are basically authors, and I would like to create a function to list them according to their surname. For example I'd like to have something like:

E:

  • Heinz Erhardt
  • Albert Einstein
  • Eminem

The problem is, I also have authors with only one name (like "Eminem") which I would also like to be sorted according to the letter E. The only way I know of to do this in wordpress is with the get_terms function and the name__like.

function getAuthors(){
$args = array(
    'name__like' => 'E',
);
return get_terms('category', $args );
}

this creates the sql query which only lists categories with an "E" in it:

AND t.name LIKE %E%;

I however need something like:

AND t.name NOT LIKE '% %' AND t.name LIKE E% OR t.name LIKE '% E';

I tried to change the code in the get_terms function in the core file where the query is set up (taxonomies.php, line 1809). However I wasn't successfull and I wouldn't like to change something in the core files.

How can I customize the query passed by the name__like? Are there other better ways I can achieve my goal?

--- EDIT ---

I used TheDeadMedic's solution and was able to list categories according to a specific letter by using for example get_terms( 'my_taxonomy', 'surname=E' ); However this surname argument doesn't work if I want to use the get_terms function multiple times on one page (for example in a loop - if I'd like to create A-Z headings and display the according sorted categories below the headings).

Here's the function I'm trying to execute. The problem is that it just keeps listing the categorys for surname=A under every heading.

function getAuthors()
{
$letters = range('A', 'Z'); // create Alphabet array
foreach ($letters as $letter) {
    echo '<h4>' . $letter . '</h4>';
    $args = array(
        'surname' => $letter
    );
    $cats = get_terms('category', $args);

    foreach ($cats as $cat) {
        echo "<ul>";
        echo "<li>" . $cat->name . "</li>";
        echo "</ul>";
    }
  }
}

The name__like argument seems to work in the loop though.

My categories are basically authors, and I would like to create a function to list them according to their surname. For example I'd like to have something like:

E:

  • Heinz Erhardt
  • Albert Einstein
  • Eminem

The problem is, I also have authors with only one name (like "Eminem") which I would also like to be sorted according to the letter E. The only way I know of to do this in wordpress is with the get_terms function and the name__like.

function getAuthors(){
$args = array(
    'name__like' => 'E',
);
return get_terms('category', $args );
}

this creates the sql query which only lists categories with an "E" in it:

AND t.name LIKE %E%;

I however need something like:

AND t.name NOT LIKE '% %' AND t.name LIKE E% OR t.name LIKE '% E';

I tried to change the code in the get_terms function in the core file where the query is set up (taxonomies.php, line 1809). However I wasn't successfull and I wouldn't like to change something in the core files.

How can I customize the query passed by the name__like? Are there other better ways I can achieve my goal?

My categories are basically authors, and I would like to create a function to list them according to their surname. For example I'd like to have something like:

E:

  • Heinz Erhardt
  • Albert Einstein
  • Eminem

The problem is, I also have authors with only one name (like "Eminem") which I would also like to be sorted according to the letter E. The only way I know of to do this in wordpress is with the get_terms function and the name__like.

function getAuthors(){
$args = array(
    'name__like' => 'E',
);
return get_terms('category', $args );
}

this creates the sql query which only lists categories with an "E" in it:

AND t.name LIKE %E%;

I however need something like:

AND t.name NOT LIKE '% %' AND t.name LIKE E% OR t.name LIKE '% E';

I tried to change the code in the get_terms function in the core file where the query is set up (taxonomies.php, line 1809). However I wasn't successfull and I wouldn't like to change something in the core files.

How can I customize the query passed by the name__like? Are there other better ways I can achieve my goal?

--- EDIT ---

I used TheDeadMedic's solution and was able to list categories according to a specific letter by using for example get_terms( 'my_taxonomy', 'surname=E' ); However this surname argument doesn't work if I want to use the get_terms function multiple times on one page (for example in a loop - if I'd like to create A-Z headings and display the according sorted categories below the headings).

Here's the function I'm trying to execute. The problem is that it just keeps listing the categorys for surname=A under every heading.

function getAuthors()
{
$letters = range('A', 'Z'); // create Alphabet array
foreach ($letters as $letter) {
    echo '<h4>' . $letter . '</h4>';
    $args = array(
        'surname' => $letter
    );
    $cats = get_terms('category', $args);

    foreach ($cats as $cat) {
        echo "<ul>";
        echo "<li>" . $cat->name . "</li>";
        echo "</ul>";
    }
  }
}

The name__like argument seems to work in the loop though.

edited title
Source Link
ndru
  • 159
  • 3
  • 13

get_terms name__like questionlist categories according to letter

My categories are basically authors, and I would like to create a function to list them according to their surname. For example I'd like to have something like:

E:

  • Heinz Erhardt
  • Albert Einstein
  • Eminem

The problem is, I also have authors with only one name (like "Eminem") which I would also like to be sorted according to the letter E. The only way I know of to do this in wordpress is with the get_terms function and the name__like.

function getAuthors(){
$args = array(
    'name__like' => 'E',
);
return get_terms('category', $args );
}

this creates the sql query which only lists categories with an "E" in it:

AND t.name LIKE %E%;

I however need something like:

AND t.name NOT LIKE '% %' AND t.name LIKE E% OR t.name LIKE '% E';

I tried to change the code in the get_terms funcitionfunction in the core file where the query is set up (taxonomies.php, line 1809). However I wasn't successfull and I wouldn't like to change something in the core files.

How can I customize the query passed by the name__like? Are there other better ways I can achieve my goal?

get_terms name__like question

My categories are basically authors, and I would like to create a function to list them according to their surname. For example I'd like to have something like:

E:

  • Heinz Erhardt
  • Albert Einstein
  • Eminem

The problem is, I also have authors with only one name (like "Eminem") which I would also like to be sorted according to the letter E. The only way I know of to do this in wordpress is with the get_terms function and the name__like.

function getAuthors(){
$args = array(
    'name__like' => 'E',
);
return get_terms('category', $args );
}

this creates the sql query which only lists categories with an "E" in it:

AND t.name LIKE %E%;

I however need something like:

AND t.name NOT LIKE '% %' AND t.name LIKE E% OR t.name LIKE '% E';

I tried to change the code in the get_terms funcition in the core file where the query is set up (taxonomies.php, line 1809). However I wasn't successfull and I wouldn't like to change something in the core files.

How can I customize the query passed by the name__like? Are there other better ways I can achieve my goal?

get_terms name__like list categories according to letter

My categories are basically authors, and I would like to create a function to list them according to their surname. For example I'd like to have something like:

E:

  • Heinz Erhardt
  • Albert Einstein
  • Eminem

The problem is, I also have authors with only one name (like "Eminem") which I would also like to be sorted according to the letter E. The only way I know of to do this in wordpress is with the get_terms function and the name__like.

function getAuthors(){
$args = array(
    'name__like' => 'E',
);
return get_terms('category', $args );
}

this creates the sql query which only lists categories with an "E" in it:

AND t.name LIKE %E%;

I however need something like:

AND t.name NOT LIKE '% %' AND t.name LIKE E% OR t.name LIKE '% E';

I tried to change the code in the get_terms function in the core file where the query is set up (taxonomies.php, line 1809). However I wasn't successfull and I wouldn't like to change something in the core files.

How can I customize the query passed by the name__like? Are there other better ways I can achieve my goal?

Source Link
ndru
  • 159
  • 3
  • 13

get_terms name__like question

My categories are basically authors, and I would like to create a function to list them according to their surname. For example I'd like to have something like:

E:

  • Heinz Erhardt
  • Albert Einstein
  • Eminem

The problem is, I also have authors with only one name (like "Eminem") which I would also like to be sorted according to the letter E. The only way I know of to do this in wordpress is with the get_terms function and the name__like.

function getAuthors(){
$args = array(
    'name__like' => 'E',
);
return get_terms('category', $args );
}

this creates the sql query which only lists categories with an "E" in it:

AND t.name LIKE %E%;

I however need something like:

AND t.name NOT LIKE '% %' AND t.name LIKE E% OR t.name LIKE '% E';

I tried to change the code in the get_terms funcition in the core file where the query is set up (taxonomies.php, line 1809). However I wasn't successfull and I wouldn't like to change something in the core files.

How can I customize the query passed by the name__like? Are there other better ways I can achieve my goal?