programing

워드프레스:next_post_link() / previor_post_link() 매개변수에 if-else 문을 삽입하시겠습니까?

lovejava 2023. 10. 26. 20:27

워드프레스:next_post_link() / previor_post_link() 매개변수에 if-else 문을 삽입하시겠습니까?

첫번째 질문입니다. 비록 책을 읽고 검색하는 것이 제 베이컨을 여러번 아꼈지만요.

저는 기껏해야 PHP 해킹자이고, 제가 만들고 있는 워드프레스 테마는 저에게 많은 것을 배우도록 강요하고 있습니다.

다음 및 이전 링크의 형식을 단일 항목이 아닌 각각의 범주에 따라 다르게 표시하도록 하는 데 문제가 생겼습니다.php's page).

지금까지 최선의 노력을 다했습니다.

<?php next_post_link(
    '%link',
    if ( in_category( 'tweet' ) ) {
        get_the_content()
    } else {
        echo '%title'
    };,
    FALSE 
)?>

이로 인해 구문 오류가 발생합니다.

첫 번째 질문은 함수의 매개 변수 내에서 if-else 문을 사용할 수 있는지 여부입니다.

제가 완전히 잘못된 방식으로 접근하고 있다면, 다시 원점으로 돌아가는 겁니다.그럼 다른 제안도 해주시면 감사하겠습니다!

나는 다음과 같은 일을 알고 있습니다.

next_post_link( '%link', get_the_title(), FALSE );
next_post_link( '%link', '%title', FALSE );

좀 더 명확히 하기 위해 링크 자체의 범주에 따라 다음/이전 링크의 출력에 영향을 미치려고 합니다. 링크가 현재 호스트 페이지에 있는 것이 아닙니다.

제가 가지고 있는 문제는 a) next_post_link()와 previor_post_link()가 어떤 카테고리인지 결정하고 b) 표시하는 방법입니다.Link그에 따라 매개변수를 말합니다.화이트 플래그를 던져도 get_adjacent_post() 및 다양한 배열을 사용하여 발견한 예는 이 시점에서 제 머리 위에 있는 것 같습니다.누군가가 이를 이용한 해결책을 알려주면 정말 고맙겠습니다.

무엇을 목표로 할 것인가요?

당신이 너무 많은 것들을 섞고 있는 것 같아서 당신의 문제는 필요 이상으로 복잡해집니다.많은 새로운 것들이 있어서, 이것은 꽤 쉽게 일어날 수 있다는 것을 알고 있기 때문에, 코딩을 시작하기 전에 무엇을 해야 할지에 대해 생각해 볼 가치가 있다고 생각합니다.결국에는 도움이 될 겁니다.

달성하고자 하는 것을 공식화하기 시작합니다.제가 당신을 제대로 이해한다면 당신은 현재 게시물 아래에 카테고리에 따라 다음 링크와 이전 링크를 다르게 표시하고 싶다고 적습니다.

그런데 어떤 카테고리?현재 표시되는 게시물 중 하나?아니면 이전/다음 링크된 게시물의 카테고리?

그 다음으로, 게시물은 여러 카테고리를 가질 수 있습니다.하나 또는 여러 범주 또는 모든 범주를 기준으로 디스플레이를 변경하시겠습니까?

그리고 마지막으로:비주얼 스타일링을 위해 수많은 HTML 태그를 출력하고 싶으십니까?아니면 CSS를 사용하길 원하십니까?

어떻게 하죠?

여러분이 정말로 성취하고 싶은 에 대해 생각해 본 후에, 여러분은 이것이 어떻게 이루어질 수 있는지 결정할 수 있습니다.

다음에서는 다음을 수행하는 몇 가지 코드 예시를 보여드리겠습니다.

  • 변경하려는 링크 형식 매개 변수의 사용 방법을 설명합니다.
  • 해당 링크의 CSS 클래스를 가져오는 방법을 보여줍니다.
  • 이러한 CSS 클래스로 테마의 출력을 확장합니다.
  • 테마 내의 다른 파일에 재사용할 수 있도록 합니다.

그래서 이 예시는 당신의 테마의 CSS를 통해 비주얼 스타일링을 위해 링크된 게시물의 카테고리를 다루고 있으며, 이는 바람직한 방법이라고 생각합니다.

PHP 코드

PHP는 상당히 유연하기 때문에 결국 이 작업을 쉽게 수행할 수 있습니다. 하지만 정확히 무엇을 해야 할지 모르는 상태에서 PHP의 이러한 유연성은 문제로 드러날 수 있습니다. 왜냐하면 추적을 느슨하게 한 다음 작동하지 않는 것을 코드화하는 것도 가능하기 때문입니다.

그냥 함수의 링크 형식을 변경하고 싶다고 합시다.

기능이 대체됩니다.%link함께(HTML그()<a href=...>Post Title</a>), 그렇다면'This is the next post of my blog: %link; waiting to be read!'매개 변수로 링크 주변에 텍스트를 추가했습니다.

<?php
  $format = 'This is the next post of my blog: %link; waiting to be read!';
  next_post_link($format);
?>

그 주변에 HTML 태그를 추가로 추가할 수도 있습니다.

<?php
  $format = '<span style="font-size:2em">%link</span>';
  next_post_link($format);
?>

모든 다음 게시물 링크가 표준 글꼴 크기의 두 배가 됩니다.

그래서 이제 이것을 좀 더 쉽게 의미화하기 위해, 카테고리/ies의 CSS 클래스를 추가하는 것이 가장 좋을 것입니다. 그러면 CSS 내에서 디스플레이를 쉽게 변경할 수 있습니다.

<?php
  $inSameCategory = true; // depends on what you want, can be false as well
  $nextPost = get_adjacent_post($inSameCategory, '', false);
  $cssClasses = get_post_class('next-post-link ', $nextPost);
  $format = sprintf('<span class="$s>%link</span>', $cssClasses);
  next_post_link($format);    
?>

다음 포스트 링크를 a로 래핑합니다.<span>링크된 게시물의 모든 CSS 클래스와 a를 포함합니다.next-post-linkCSS-Selector가 링크를 스타일링하기 위해 이것이 필요한 경우 class.CSS의 몇 가지 예시는 다음과 같습니다.

.next-post-link.category-tweet {font-size: 2em;}

재사용이 가능하도록 만들기

다음 및 사전 링크가 있으므로 매개 변수 하나를 변경하는 경우에만 해당 코드를 복사할 수 있습니다.하지만 우리는 게으르고 대신 우리만의 기능으로 포장합니다.

  /**
   * my theme's format string for prev|next_post_link()
   *
   * @param bool $previous (optional) previous (true, default) or next (false) post
   * @param bool $inSameCategory (optional) use same category, default: true
   * @return string
   */
  function my_prev_next_link_format($previous = true, $inSameCategory = true) {
    $postId = get_adjacent_post($inSameCategory, '', $previous);
    $cssClasses = get_post_class('next-post-link ', $nextPost);
    $format = sprintf('<span class="$s>%link</span>', $cssClasses);
    return $format;
  }

이 기능을 테마에 배치합니다.그러면 모든 템플릿에서 사용할 수 있습니다.이제 이를 사용하는 것은 매우 쉬워졌습니다.

<?php prev_post_link(my_prev_next_link_format()); ?>
...
<?php next_post_link(my_prev_next_link_format(false)); ?>

이 모든 것을 다 정리했다면 테마의 CSS 내에서 다음 링크와 예방 링크를 쉽게 스타일링 할 수 있습니다.

익명 기능을 사용해 보셨나요?함수 내에서 if-else 문을 사용할 수 있는 방식입니다.

시도:

$format_string = in_category('tweet') ? 
'<span style="color:red;">%link</span>' : '%link';

next_post_link($format_string);

두 번째 및 세 번째 매개변수는 선택사항이며 제목과 false로 기본 설정됩니다.

편집:

이 플러그인은 모르지만..

if(in_category('tweet')){
$format_string = '<span style="color:red;">%link</span>';
$link_text = get_the_content();
}else{
$format_string = '%link';
$link_text = '%title';  
}

next_post_link($format_string, $link_text);

언급URL : https://stackoverflow.com/questions/6395029/wordpress-inserting-if-else-statement-into-next-post-link-previous-post-lin