플러그인 슬러그는 어떻게 찾을 수 있습니까?


11

플러그인 슬러그를 어떻게 찾을 수 있는지 궁금합니다 (슬러그 = 플러그인 업데이트를 수행하고 현재 활성화 된 플러그인을 결정하기 위해 WordPress에서 사용하는 내부 이름)? 일반적으로 플러그인의 폴더 이름이지만 플러그인에 폴더가 없으면 파일 이름 (hello.php와 같은)입니다. 다른 예외가 있습니까?

  1. 소문자와 대문자가 중요합니까?
  2. 플러그인이 폴더 이름과 다른 슬러그를 가질 수 있습니까? hello.php라는 플러그인과 다른 /hello.php/hello.php 플러그인이 있다면 어떨까요?

아주 좋은 질문, 우리가 Q에게
바운티를

답변:


8

플러그인을 식별하기 위해 WordPress에서 사용되는 문자열은 다음과 같습니다.

plugin_basename($file);

플러그인 헤더$file 가있는 파일입니다 .

플러그인에 있다면 다음과 같이 슬러그를 얻으십시오.

$slug = plugin_basename( __FILE__ );

1
plugin_basename ($ 파일); 3.8.1 이후 슬러그가 아닙니다. 이것은 folder / plugin_main_file.php 경로입니다. 플러그인 Akismet의 "슬러그"는 "akismet / akismet.php"가 아니라 "akismet"입니다.
Jeff Mattson

3
이것은 더 이상 정답이 아닙니다.
majick

@majick 사실, Wordpress 4.7.4의 경우 답변이 아닙니다
Marecky

2
플러그인 슬러그를 생성하는 다른 방법은을 사용하는 것 dirname(plugin_basename(__FILE__))입니다.
ilanco

2

WP-CLI 를 설치 하면 명령 행에서 슬러그 및 버전이 포함 된 플러그인 목록을 얻을 수 있습니다.

> wp plugin list

코드에서 슬러그를 찾아야하는 경우 아마도 원하는 것이 아니라는 것을 알고 있지만 TGM-Plugin-Activation 플러그인으로 작업하는 동안 도움이되었습니다.

WP-CLI가 없으면 WordPress로 작업하기가 어렵다는 것을 알았습니다. 일반적으로 WordPress와 관련된 많은 일반적인 작업에 매우 유용한 도구입니다.


2

플러그인 (메인) 파일과 플러그인의 슬러그의 차이점은 워드 프레스 코덱스가 훨씬 더 나은 곳입니다. 너무 최근에 느꼈을 때 (혼란과 혼동 됨) 혼란을 이해합니다.

이것이 워드 프레스 핵심 코드에 대한 "탐정 작업"을 통해 배운 것입니다.

플러그인 파일

이는 WordPress가 플러그인을 식별하고 기록하는 고유 한 방법입니다. 플러그인 디렉토리와 기본 플러그인 파일 (버전, 작성자 등과 같은 다양한 플러그인 세부 사항을 포함하는 파일 헤더가있는 파일)로 구성됩니다.

다음과 같이 보일 것입니다 : your-plugin-directory/main-file.php

활성화 된 플러그인 데이터를 보면 get_option( 'active_plugins' ) )를 보면 WordPress에서 플러그인을 올바르게 식별하기 위해이 플러그인 파일 만 필요하다는 것을 알 수 있습니다.

플러그인의 기본 파일 상대 경로 (있는 wp-content/plugins/디렉토리에 상대적인 경로)로 생각할 수 있습니다 . 다음과 같이 메인 플러그인 파일의 절대 경로를 "구성"할 수 있습니다 :trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file

코어 자체는 다음과 같이 플러그인 파일을 생성합니다.

$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );

플러그인 슬러그

플러그인 "슬러그" 는 포스트 슬러그와 같은 플러그인에 대한 일종의 표준화 된 ID 일 것으로 예상합니다. 따라서이 "슬러그"를 사용하여 WordPress 핵심 기능에 제공하고 작업을 수행 할 수 있습니다.

실제로는 아닙니다. 플러그인 슬러그 (또는 중요한 주제)에 대한 참조를 찾기 위해 핵심을 검색하고 거의 아무것도 찾지 못하면 나는 그것에 대해 이해하고 있다고 생각합니다.

유일한 슬러그 는 게시물, 페이지, 분류법 등 고유 한 URL을 통해 액세스 할 수있는 것들입니다. 즉, 게시물 제목과 같은 이름 을 사용 하여 URL 친화적 인 버전을 생성하는 요점은 다음과 같습니다. URL에.

그러나 URL에서 테마 / 플러그인 "슬러그"를 어디에 사용합니까?

개별 WordPress 설치에서는 WP 관리자 나 프론트 엔드에서 그렇게하지 않습니다.

그러나 WordPress 코드 인 WordPress.org 사이트 와 많은 관련이 있습니다. 사람들은 WordPress.org 테마 또는 플러그인 슬러그 가 게시물 또는 페이지 슬러그와 동일하게 작동해야한다고 생각하는 것이 개발자들 사이에서 어떻게 든 공통적이라는 것을 포함하여 두 가지를 구별하는 데 어려움을 겪고 있습니다.

동일한 목적으로 사용되지만 별도의 웹 사이트에서 제공됩니다. WordPress.org에서는 다른 테마의 테마를 식별하고 나머지 플러그인 (예 :https://wordpress.org/plugins/akismet/ )을 .

그러나 개별 WordPress 설치와 관련하여 WordPress.org와 같이 강제 할 권한이 없으므로 동일한 고유성을 보장 할 수 없습니다. 모든 플러그인과 테마가 WordPress.org에서 제공 된 경우 작동 할 수 있지만 다행히도 그렇지 않습니다.

WordPress 코드는 테마 / 플러그인 슬러그와 어떤 관련이 있습니까?

WordPress 핵심 코드 는 테마 / 플러그인 슬러그에 의존하지 않습니다 설치, 활성화, 업데이트, 삭제와 같은 작업을 수행 .

테마의 경우 테마 의 주요 진입 점 은 테마 이므로 테마 디렉토리 에 의존 합니다.style.css 파일 합니다 (다른 CSS 파일을 사용하여 테마 세부 사항 헤더를 보유 할 수 없음).

플러그인의 경우 플러그인은 기본 파일을 호출 할 수 있으므로 플러그인 디렉토리와 기본 플러그인 파일 에 의존합니다 .

코어가 테마 / 플러그인 슬러그를 사용하는 유일한 방법은 WordPress.org 디렉토리에서 테마 및 플러그인을 처리 할 때 입니다. 플러그인 목록 가져 오기, 업데이트 확인, 디렉토리 사용 데이터로 다시보고 등.


플러그인 슬러그 에 대한 마무리 :slug 항목 이있는 플러그인 데이터를 찾을 때마다 99 % 는 플러그인WordPress.org 슬러그를 참조합니다 .

플러그인 식별은 어떻게합니까?

WordPress 설치에서 특정 플러그인을 프로그래밍 방식으로 활성화, 업데이트, 비활성화 또는 삭제하려면 플러그인 파일 을 사용해야 합니다. 플러그인의 기본 파일 에서 다음 과 같이 얻을 수 있습니다 .

$plugin_file = plugin_basename( __FILE__ );

다른 플러그인에서 특정 플러그인타겟팅 하려면 약간의 "guesswork"에 의존해야하기 때문에 상황이 약간 까다로워집니다.

플러그인 이름을 하드 코딩하고 모든 플러그인 목록에서 플러그인을 검색하고 ( get_plugins () 참조 ) 플러그인 파일을 가져올 수 있습니다.

당신은 당신이 반사를 사용할 수있는 플러그인이에 의해 정의 된 클래스 또는 함수를 알고있는 경우 (볼 클래스에 대한 대답과 이 하나의 기능을).


이것이 "플러그인 슬러그"를 다루는데 어려움을 겪을 수있는 다른 사람들에게 도움이되기를 바랍니다. 그것은 몇 시간을 절약 할 수 있습니다 :)


0

원래 게시물 이후 명확하게하기 위해.

플러그인 슬러그를 찾은 방법은 먼저 플러그인 폴더로 이동 한 다음 플러그인과 관련된 폴더를 열고 아래 코드가 들어있는 파일을 찾는 것입니다. 이 파일을 찾으면 파일 이름에서 확장자를 뺀 값이 플러그인 슬러그 여야합니다.

예를 들어, 내가 advanced-plugin-awesomeness.php라는 파일에서 아래 코드를 발견하면 내 슬러그는 advanced-plugin-awesomeness가됩니다.

도움이 되었기를 바랍니다!

/*
Plugin Name: Name of plugin here
Version: 2.4.6
Description: plugin description here
Author: plugin author here

-1 대부분의 파일 이름과 디렉토리가 일치하는 동안 업데이트 슬러그 실제로 디렉토리로, 이것은 신뢰할 수있는 방법이 아니므로 - (. 어떤 디렉토리가없는 경우 제외)가 아닌 파일 이름
majick

또는 디렉토리조차! 내 업데이트 된 답변을 참조하십시오. 실제로 플러그인 이름에서 나옵니다.
majick

0

불행히도 슬러그는 업데이트 API를 통해 반환되지만 API 자체를 쿼리하지 않으면이 질문에 대한 대답이 명확하지 않습니다. 그러나 현재 플러그인 슬러그 및 관련 플러그인 데이터 목록을 보려면 다음을 수행하십시오.

print_r(get_site_transient('update_plugins'));

그러나 여기에는 12 시간 동안 새로 설치된 플러그인에 대한 정보가 없습니다. 예를 들어, 다른 플러그인을 사용해야합니다. 에서 수정 된 코드 버전을 사용하십시오 wp_update_plugins.wp-includes/update.php ...

이를 테스트하기 위해이 작업을 수행 한 결과 플러그인 파일 이름이나 위치 또는 대문자에 관계없이 실제로 Plugin Name업데이트 슬러그를 생성하는 것으로 확인되었습니다 sanitize_title. 따라서 정답은 다음과 같아야합니다.

// if you have the plugin basename:
// $pluginfile = WP_PLUGIN_DIR.'/'.$pluginbasename;

// otherwise if you have the absolute path already:
$plugin = get_plugin_data($pluginfile);
$pluginslug = sanitize_title($plugin['Name']);

+1 및 추가 사항은 wordpress.org 팀이 슬러그 계산 방법론이 아직 완전히 최종적이지 않다는 것이
명백해지면서

이것이 정확하지 않은지, 플러그인에 대해 시도했지만 실패했습니다 : 반환 된 플러그인 이름은 "Responsive WordPress Slider-Soliloquy Lite"이며 슬러그는 다음과 같습니다. soliloquy-lite
Chris

플러그인이 저장소에 제출 될 때 슬러그가 생성되고 나중에 이름으로 변경되지 않기 때문에 이것이 의심됩니다 ... 대부분의 경우 디렉토리 이름과 일치하지만 둘 다에 예외가있는 경우 하나 또는 다른 하나입니다. 그것은 이상적이지 않습니다 :-/
majick

0

다음 과 같이 DIR 을 plugin_basename () 에 전달하여 플러그인의 폴더 이름 (PHP5.3 +)을 얻을 수 있습니다 .

$plugin_foldername = plugin_basename( __DIR__ );

0

이 시도:

function get_slugname(){
    $tmp = array();
    $plugins_all = get_plugins() ;
    $plugin_slug = explode('/',dirname(plugin_basename(__FILE__)));
    foreach ($plugins_all as $key=>$value) {
        if ($plugin_slug[0] == explode('/',$key)[0] ) {
        $tmp = $value;
        $tmp['slug'] = explode('/',$key)[0];
        $tmp['file'] = explode('/',$key)[1];
        }
    }
return $tmp;
}

1
제발 답변을 편집 하고이 코드가 무엇을하는지에 대한 설명을 추가 할 수 있습니다.
Nathan Johnson

0

대부분의 플러그인에서 "슬러그"는 디렉토리 이름과 동일합니다. .org 사용자는 디렉토리 이름을 원하는대로 설정할 수 있습니다.

$slug = (dirname(plugin_basename(__FILE__)));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.